Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4876 / 13646 ツリー ←次へ | 前へ→

【53882】結合セルを含む値コピー りった 08/2/13(水) 16:43 質問[未読]
【53893】Re:結合セルを含む値コピー [名前なし] 08/2/13(水) 22:05 回答[未読]
【53898】Re:結合セルを含む値コピー りった 08/2/14(木) 9:58 質問[未読]
【53899】Re:結合セルを含む値コピー VBWASURETA 08/2/14(木) 10:17 発言[未読]
【53901】Re:結合セルを含む値コピー VBWASURETA 08/2/14(木) 10:21 発言[未読]
【53904】Re:結合セルを含む値コピー りった 08/2/14(木) 11:13 質問[未読]
【53906】Re:結合セルを含む値コピー ハチ 08/2/14(木) 12:45 発言[未読]
【53907】Re:結合セルを含む値コピー りった 08/2/14(木) 13:08 お礼[未読]

【53882】結合セルを含む値コピー
質問  りった  - 08/2/13(水) 16:43 -

引用なし
パスワード
   いつもお世話になっております。

下記二つの条件でコピーしたいのですが、やり方がわかりません。
・結合セルが有る。
・コピー元には数式が入っているが、値としてコピーしたい

Range("A1:A3").Copy
Range("B1:B3").PasteSpecial xlPasteValues
とすると、「この操作には、同じサイズの結合セルが必要です」とのエラーになります。

Range("A1:A3").Copy
Range("B1:B3").PasteSpecial xlPasteAll
とすると、数式としてコピーされます。

Range("A1:A3").Copy
Range("B1:B3").PasteSpecial xlPasteAll
Range("B1:B3").PasteSpecial xlPasteValues
としても、「この操作には、同じサイズの結合セルが必要です」とのエラーになります。(xlPasteAllで同じサイズにわざわざしたつもりなのですが...)

(実運用しているソースは載せれないので、上記ソースは単純化したソースです。)

【53893】Re:結合セルを含む値コピー
回答  [名前なし]  - 08/2/13(水) 22:05 -

引用なし
パスワード
   Range("B1:B3").Cells(1).Value = Range("A1:A3").Cells(1).Value

でどうですか?

【53898】Re:結合セルを含む値コピー
質問  りった  - 08/2/14(木) 9:58 -

引用なし
パスワード
   回答ありがとうございます。

Range("B1:B3").Cells(1).Value = Range("A1:A3").Cells(1).Value

でやってみたところ、A3がコピーされませんでした。

Range("B1:B3").Value = Range("A1:A3").Value
ってやってみたところ、A3もコピーされました。

が、別の問題が発生しました。
セル内の文字数が多いと
「アプリケーション定義またはオブジェクト定義のエラーです。」
になってしまいます。
実験してみたところ、912文字以上でエラーになります。(文字数が環境依存するかは知りません。)

条件追加ですみませんが、下記条件でのコピー方法をご教示下さい。
・文字数がやたらと多い
・コピー元は式コピー先は値
・コピー元は結合セルを含む

【53899】Re:結合セルを含む値コピー
発言  VBWASURETA  - 08/2/14(木) 10:17 -

引用なし
パスワード
   ▼りった さん:
おはようございます。
確かですが、1セルに入れられる文字数は制限があった気がします。

もしその関係だった場合は難しいかも知れません。

【53901】Re:結合セルを含む値コピー
発言  VBWASURETA  - 08/2/14(木) 10:21 -

引用なし
パスワード
   ▼りった さん:

すみません。制限の問題かなっと試しに

Range("B1").Value = Range("A1").Value

をやってみたら行けそうです。
結合されたままで値だけコピーできました。

【53904】Re:結合セルを含む値コピー
質問  りった  - 08/2/14(木) 11:13 -

引用なし
パスワード
   回答ありがとうございます。

>Range("B1").Value = Range("A1").Value
>
>をやってみたら行けそうです。
>結合されたままで値だけコピーできました。

確かに出来るとは思うのですが
・実運用のソースは結構大きな範囲をコピーしたいので(条件記載してなくて済みません)、ぐるぐるループして1セルずつValueを代入するとレスポンスが心配
・同様のコピー処理が数十箇所有るので全部をループにするのはキツイ。
 (関数かぶせても良いですが、他の人のVBAスキルが低いのであまり関数化したくない)

他に方法がなさそうでしたらそうさせて頂きます。
一括してコピーする方法無いですかね?

【53906】Re:結合セルを含む値コピー
発言  ハチ  - 08/2/14(木) 12:45 -

引用なし
パスワード
   ▼りった さん:

>条件追加ですみませんが、下記条件でのコピー方法をご教示下さい。
>・文字数がやたらと多い
>・コピー元は式コピー先は値
>・コピー元は結合セルを含む

コピー先のセルは、結合された状態にしたいのか? が良くわかりませんが、
こんな感じで出来ないですかね?

新規WorkSheetにSample でデータを作って確認してみてください。

Option Explicit

'対象範囲 A1:A4とする
Sub Sample()
  Range("A2:A3").Merge
  Range("A1").Formula = "=REPT(1234567890,100)"
  Range("A2").Formula = "=REPT(1234567890,100)"
  Range("A4").Formula = "=REPT(1234567890,100)"
  'A4は関数ではなく値に変更
  Range("A4").Value = Range("A4").Value
End Sub

Sub Test1()
  '検証用にB列を削除
  Call B_Del
  
  Range("A1:A4").Copy Range("B1:B4")
  With Range("B1:B4")
    .Value = .Value
  End With
  
End Sub

Private Sub B_Del()
  Range("B:B").Delete
End Sub

【53907】Re:結合セルを含む値コピー
お礼  りった  - 08/2/14(木) 13:08 -

引用なし
パスワード
   >コピー先のセルは、結合された状態にしたいのか? が良くわかりませんが、

済みません。
出来れば結合状態を変えたくないですが、コピーしてしまっても妥協範囲内です。
(結合をすべて解除するのはNG)

>こんな感じで出来ないですかね?

.Value = .Value
のところでエラーになりました。

ですが、ご教示頂いた「コピーしてから再度値コピー」という発想を元にちょっと変えてみたところ出来ました。

Sub Test1()
  '検証用にB列を削除
  Call B_Del
 
  Range("A1:A4").Copy Range("B1:B4")
  With Range("B1:B4")
'    .Value = .Value
    .Copy
    .PasteSpecial xlPasteValues
  End With
 
End Sub

皆様、ありがとうございました。

4876 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free