Excel VBA質問箱 IV

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

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


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

【11796】VBA セルの書式入力 おじゃる 04/3/16(火) 15:36 質問
【11798】Re:VBA セルの書式入力 IROC 04/3/16(火) 15:38 回答
【11799】Re:VBA セルの書式入力 おじゃる 04/3/16(火) 15:49 質問
【11800】Re:VBA セルの書式入力 Asaki 04/3/16(火) 15:53 回答
【11805】Re:VBA セルの書式入力 おじゃる 04/3/16(火) 16:22 質問
【11806】Re:VBA セルの書式入力 Asaki 04/3/16(火) 16:24 回答
【11807】Re:VBA セルの書式入力 おじゃる 04/3/16(火) 16:39 お礼

【11796】VBA セルの書式入力
質問  おじゃる  - 04/3/16(火) 15:36 -

引用なし
パスワード
   どなたか教えてください。
VBAで10000件以上のワークシート間のセルのコピーをしたら、恐ろしく時間がかかりました。
そこで、セルに直接入力をしたいのですが、書式はどのように記述したらよいのでしょうか。

例えば数式を入力するときは
  Range("A1")=Range("B1").Formula
ですよね。

この調子でセルの書式を入力したいのですが、できますか?
初心者ですみません。
よろしくお願いします。

【11798】Re:VBA セルの書式入力
回答  IROC  - 04/3/16(火) 15:38 -

引用なし
パスワード
   具体的にどのような範囲でしょうか?

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

【11799】Re:VBA セルの書式入力
質問  おじゃる  - 04/3/16(火) 15:49 -

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

範囲というのはコピーの範囲ですか?
1つのセルから1つのセルです。

For i=1 to 10
 Workbooks("book1").Sheets("sheet1").Range("A" & i)= _
    Workbooks("book2").Sheets("sheet2").Range("B" & i).Formula
Next

こんな感じなのですが、値ではなく、数式と書式を入力したいのです。

説明が下手ですみません。。。
よろしくお願いします。

【11800】Re:VBA セルの書式入力
回答  Asaki  - 04/3/16(火) 15:53 -

引用なし
パスワード
   こんにちは。

Workbooks("book2").Sheets("sheet2").Range("B1:B10").Copy _
  Destination:=Workbooks("book1").Sheets("sheet1").Range("A1:A10")

という感じでは如何でしょうか?

処理が遅いといっても、書式はセルに直接アクセスしないとダメですから、ある程度は仕方なさそうです。
あとは、数式のみコピーして、書式をプロパティでじかに設定する方法でしょうか。

【11805】Re:VBA セルの書式入力
質問  おじゃる  - 04/3/16(火) 16:22 -

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

実行してみたところ、複数行から複数行へはうまくいきましたが、
以下のやりかただとだめでした。
複数行から1つのセルへはできないのでしょうか。

この様な式でコピーされませんでした。
for i=1 to 10
  copy_line="A1:A1"
  Workbooks("book2").Sheets("sheet2").Range(copy_line).Copy _
  Destination:=Workbooks("book1").Sheets("sheet1").Range(Cells(i, 2))
Next

copy_line は実際にはその都度作られます。
"A1:A1" の時もあれば、"A1:H1" の場合もあります。

よろしくお願いします。

【11806】Re:VBA セルの書式入力
回答  Asaki  - 04/3/16(火) 16:24 -

引用なし
パスワード
   >Destination:=Workbooks("book1").Sheets("sheet1").Range(Cells(i, 2))

Destination:=Workbooks("book1").Sheets("sheet1").Cells(i, 2)

ですか?

【11807】Re:VBA セルの書式入力
お礼  おじゃる  - 04/3/16(火) 16:39 -

引用なし
パスワード
   間違えてました。その様に書き直したらちゃんと動きました。
時間もすこし短くなりました。
ありがとうございました。

書式は、Range("A1").Formula の様には取得できないのですね。
コピー以外で方法がなければあきらめます。

Asakiさん、IROCさん、ありがとうございました。

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