ID非公開

2021/7/26 22:53

33回答

VBAでの繰り返し処理についてご教示のほどよろしくお願いします。 Xフォルダを指定して、フォルダ内のブックの全てに別のAエクセルブックの内容を入力するマクロを作りたいと思っています。

画像

Visual Basic | Excel48閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

0
画像

ID非公開

質問者2021/7/27 18:25

別の処理(質問とは関係ないので省きました)の関係でご回答の一部を参考に作成してみたところ、エラーにもならず思う通りに入力できました。 まだ理解不足ですが、 Set sh = ThisWorkbook.Worksheets("sheet1") '★ Set bk = Workbooks.Open(p & buf) 上記の Set~ の部分を追加したことが解決に繋がった気がしております。 ありがとうございました。

ThanksImg質問者からのお礼コメント

こちらの回答を参考にして作成できましたので選びました。 ありがとうございました。

お礼日時:7/28 17:48

その他の回答(2件)

0

以下で正常に動作します。 Dim シート As String Dim セル As String Dim 値 As String Dim a As Integer a = 5 Do While Cells(a, 2).Value <> ""     シート = Cells(a, 2)     セル = Cells(a, 3)     値 = Cells(a, 4)     Worksheets(シート).Range(セル).Value = 値     a = a + 1 Loop もしかして、Dim文とか、変数への代入文を、プロシージャに記述せずに、シートに記述してませんか? それと、ちなみに以下の方がコード量は少なくて済みます。 分かりやすいかは別ですが。 Dim a As Integer a = 5 Do While Cells(a, 2).Value <> ""     Worksheets(Cells(a, 2).Value).Range(Cells(a, 3)).Value = Cells(a, 4)     a = a + 1 Loop

ID非公開

質問者2021/7/27 12:49

ありがとうございます。 dim文等はプロシージャーに入力しています。 画像は説明用にセルに記入、質問本文では省いていました。紛らわしくてすみません。 また、動作確認ありがとうございます。 変わらず Worksheets(シート).Range(セル).Value = 値 の部分でエラーになるようなので別の部分で問題があるのだと思います。 理解は追い付いていませんが、コード量の少ない構文もありがとうございます。今後作成していく際に参考にさせていただきます。

0

CELLSとRANGEをどちらかに統一してください。 その時点でパニックになると思います。 CELLSは行、列の順に数値で指定、A5ならCells(5,1) RANGEは、文字列でアドレスを指定、同、range("A5")

ID非公開

質問者2021/7/27 7:57

ありがとうございます。 Aエクセルブック(シート、セル、値)の表に入力するのは「H20」なのでrangeとしていますが、繰り返しの際には行数を変動させたくてcellsを使い作成しています。 統一していないことがエラーの原因であるならば対処を考えてみたいと思います。