お世話になっております。
VBAのループについて教えていただきたいです。
更新ボタンを押した際に自動で計算されるプログラムを組んでおります。
計算のモジュールは「Module_g.InputCalc」で引数は(ActiveCell.Row, "支出"または"粗利益")で呼ぶことができます。
現在のコードだと粗利益の部分も支出の計算で入ってしまうため、粗利益に入ったら粗利益の計算がされるようにしたいです。
その時の判定の取り方を教えていただきたいです。
また、支出・粗利益の中の項目は追加していくことがあります。
コード
Sub DateUpdate()
With Sheets("HOME")
Dim i As Integer
For i = 7 To .Cells(Rows.Count, 1).End(xlUp).Row
Call Module_g.InputCalc(i, "支出")
Next
End With
End Sub
No.1
- 回答日時:
こんにちは
>粗利益に入ったら粗利益の計算がされるようにしたいです。
添付図の赤系のところと青系のところだと解釈しましたが、そもそも、ご提示のコードでループの終わりの行を
.Cells(Rows.Count, 1).End(xlUp).Row
で算出している理由は何なのでしょうか?
ご提示の図から推測するところ、「支出」7~13行、「粗利益」は14~18行というのは固定ではないのでしょうか?
もしそうであるなら、
IF i<14 Then kamoku = "支出" ELSE kamaoku = "粗利益"
Call Module_g.InputCalc(i, kamoku)
みたいなことで良いのでは?
表の形式は同様だけれど、行数が可変で固定ではないというのであれば、 i 行のA列の値を見て(空白の場合は上方向に探す)引数を決定するような仕組みにしておけば良いのではないでしょうか?
No.2ベストアンサー
- 回答日時:
既に回答は出てますが、A列の最終行の取得方法から見て『粗利益』の各項目については計算されるようになっていると言う事でしょうか?
Sub DateUpdate_2()
Dim i As Integer
Dim komoku As String
With Sheets("HOME")
For i = 7 To .Cells(Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A").Value <> "" Then
komoku = .Cells(i, "A").Value
Call Module_g.InputCalc(i, komoku)
End If
Next
End With
End Sub
それともその辺も検討中なのですか?
Sub DateUpdate_3()
Dim i As Integer
Dim komoku As String
With Sheets("HOME")
For i = 7 To .Cells(Rows.Count, "B").End(xlUp).Row
If .Cells(i, "A").Value <> "" Then komoku = .Cells(i, "A").Value
Call Module_g.InputCalc(i, komoku)
Next
End With
End Sub
こちらはB列で7~最終行を求めループさせてます。
B列の空白セルについては『Module_g.InputCalc』がどうなっているのかで違うかもですが。
No.3
- 回答日時:
こんばんは!
回答ではありません。
>(ActiveCell.Row, "支出"または"粗利益")で呼ぶことができます。
というコトですが、分岐は二つだけでしょうか?
通常は「項目」も選ぶ必要があると思うのですが・・・
項目名があるのであれば、B列で行を選択することが可能になると思うのですが。
※ 具体的なアドバイスでなくてごめんなさい。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
C言語の課題で、1年の秒数を計...
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
C言語についてです。 再帰を使...
-
VBとVBAの違い
-
傾いた四角形内の範囲の条件式
-
骨折リスク評価のFRAXについて...
-
チェックデジット計算できる関...
-
入射角反射角
-
バッチファイルでウインドウを...
-
C++言語で、レナードジョーン...
-
2進数の乗算をc言語で計算した...
-
べき乗の計算が遅い理由
-
数値計算の高速化 (cos, sin, exp)
-
Vba Cells.Findについて教えて...
-
ExcelのマクロVBA動作を軽くす...
-
VBAの再計算が反映されない件に...
-
fortran πについて
-
C言語についての質問です。 ル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
Visual C++でdebugとreleaseで...
-
変化させるセルが変化しない
-
骨折リスク評価のFRAXについて...
-
C# 計算処理中に実行中ウィン...
-
VBAでの勤務時間計算
-
べき乗の計算が遅い理由
-
C言語についてです。 再帰を使...
-
Excel VBAにてFFT
-
数値計算の高速化 (cos, sin, exp)
-
VBとVBAの違い
-
VB6で正確なミリ秒を計測したい...
-
スレッド処理からダイアログを...
-
matlabで計算終了
おすすめ情報