• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのループ処理について)

VBAのループ処理について

このQ&Aのポイント
  • VBAのループ処理について教えていただきたいです。
  • 更新ボタンを押した際に自動で計算されるプログラムを組んでおります。
  • 粗利益の計算がされるように判定の取り方を教えていただきたいです。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

単純に考えると Dim i As Integer mStr = "支出" For i = 7 To .Cells(Rows.Count, 1).End(xlUp).Row If .Cells(i, 1).Value = "粗利益" Then mStr = "粗利益" End If Call Module_g.InputCalc(i, mStr) Next End With

その他の回答 (2)

  • chachaboxx
  • ベストアンサー率23% (412/1777)
回答No.3

VBAというより最も単純なひとつの手法は、 関数の中から参照できる条件分岐用のグローバル変数(バイナリフラグ)を用意しておくようにします。 計算処理を速くしたければ、コードは冗長になりますが似たようなループを2つ作りループの前で分岐させます。 コードの見通しをよくしたければ、ループ内に分岐を入れて計算させます。 再利用性(編集性)がいいのは後者ですが、トータルパフォーマンスがいいのは、前者のループをそれぞれ単純関数化してサブルーチンで呼び出す感じがメインソースが見やすくなると思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

そういうことになるのは何の不思議もない。当然。 しかし画像だけでは、データの状況・内容がわからない。 特に説明が必要なのは、A列の支出行などは、セル結合がされているのか。 それなら、それを頼りにする方法もあるが。 上の行から順次処理すべきなのかどうかもよくわからない。 要するに質問の説明が不十分なんだ。 それに初心者は見てくれがよいので、よくやるが、VBAなど使うときは、セル結合をしていると、処理が面倒だということが身に染みる。 ーーーー 下記を参考にして、考えてコードを組んだら。 例データA2:B10 行が第2-5行、6-7行、8-10行が結合されているとする。 項目1が「支出」、aが「〷費」に当たる。下記の a-iはB列データです。 項目1 a   b     c   d 項2   e   f 項目3  g   h   i ーーー 標準モジュール Sub test01() Lr = Range("A1000").End(xlUp).Row i = 2 p1: If i > Lr Then Exit Sub If ActiveSheet.Cells(i, 1).MergeCells = True Then m = ActiveSheet.Cells(i, 1).MergeArea.Rows.Count MsgBox Cells(i, "A") MsgBox m ’---費目の把握 For j = i To i + m - 1 MsgBox Cells(j, "B") Next j End If i = i + m GoTo p1 End Sub

関連するQ&A