• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA初心者です。下記のコードを書いてうまくいきました。が、これは一行)

VBA初心者が複数行の処理を記述する方法

このQ&Aのポイント
  • VBAの初心者ですが、60行の処理を同時に適用する方法を教えてください。
  • 私はVBA初心者で、一行分の処理は書けるようになりましたが、複数行の処理を同時に適用する方法がわかりません。
  • 現在、私はVBAのコードを書いていますが、一行分の処理しかできません。実際には60行の処理に同じ処理を適用したいのですが、どのように書けばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

> 動作を60行とかに同時に どこの60行かが分かりませんが、次のような感じでしょうか? Private Sub Worksheet_Change(ByVal Target As Range)  Dim I As Integer  Application.EnableEvents = False  For I = 41 To 100    If Cells(I, "CH") < Cells(I, "CC") Then Cells(I, "CH") = Cells(I, "CC")  Next I  Application.EnableEvents = True End Sub 注)  ・Application.EnableEvents   今回特に使用しなくてもできそうですが、セルに値をセットすると、処理中にまたChangeイベントが   発生してしまう可能性があるので入れました。  ・Cells(I, "CH") = Cells(I, "CC")   値を入れるだけだと思いますので、コピーしなくても直接セルに値を設定した方がスッキリすると   思います。 プログラムは色々なテクニックや作り方があると思います。 なるべくステップを減らし、分かりやすいプログラム作成に心がけて下さい。

tremor
質問者

お礼

jcctairaさん、ありがとうございました! 操作したところこちらの希望していたとおりの動作です! ”処理中にまたChangeイベントが発生してしまう可能性があるので入れました”こういう視点がやはり付け焼刃で学習した人間には欠落していました。入門書片手にFindメソッドで試そうかなどと思案してたところです。 専門家ではないですが、自分なりにこれから少しずつ理解を深めたいと思います。 本当にありがとうございました。

その他の回答 (1)

  • muunoy
  • ベストアンサー率38% (70/183)
回答No.1

Worksheet_Changeに書いているということは、 シートが変更されたら、マクロを起動したいということですよね。 Select範囲を任意の60行にすればよいのだと思います。 複数行は、例えば Range("A1:A60").Select のように書けば選択することができます。

tremor
質問者

補足

補足させてください。 はい、セルの値が変更したことによりif条件が起動し、該当する値がコピー先にペーストされることを複数行でおこなえることを目ざしています。 Rangeを範囲として選択できるのはわかるのですが、たとえば範囲で指定した場合、if条件にもかかわらずすべてがコピペされることにならないかと懸念しています。 初めて書いたコードがイベントドリブンでなんともハードルが高いのですが、ここまできたので完成させたいと思います。 記載していますコードは一行分に対してはキチンと動作してます。 ひきつづきアドバイス戴ければ幸いです。

関連するQ&A