ExcelVBAです。


A列  B列  C列  D列
↓ 1行目・・・ブランク行
↓ 2行目・・・ブランク行
↓ 3行目・・・ブランク行
商品 単価 数量 備考


C5セルから順に下へ数量を足していき、inputboxで指定した合計数
になったら、その対象セルがある行を選択状態にしたい。

丁度指定した合計数にならない場合は、プラスマイナスでその数に近い行を選択。

下記は合計数を4000で指定しているケースですが、毎回指定する
合計数が違うため、合計枚数をInputBoxで指定したいのですが、
どうすればよいでしょうか?


Sub Macro()
Dim r As Long
Dim count As Long
Dim LastRow As Long
'合計の数を指定
Const CountMax As Long = 4000

LastRow = Range("C65536").End(xlUp).Row
For r = 5 To LastRow
count = count + Cells(r, 3).Value
If count >= CountMax Then
Exit For
End If
Next r
If count - CountMax > CountMax - (count - Cells(r - 1, 3).Value) Then
r = r - 1
End If
Rows(r).Select
End Sub

宜しくお願い致します。

回答の条件
  • 1人3回まで
  • 登録:2008/08/10 01:03:56
  • 終了:2008/08/10 01:18:37

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/08/10 01:13:34

ポイント60pt
Sub Macro()
    Dim r As Long
    Dim count As Long
    Dim LastRow As Long
    Dim CountMax As Long
    
    CountMax = Application.InputBox(Prompt:="数字を指定してください。", Type:=1)
    If CountMax = False Then Exit Sub
    
    LastRow = Range("C65536").End(xlUp).Row
    For r = 5 To LastRow
        count = count + Cells(r, 3).Value
        If count >= CountMax Then
            Exit For
        End If
    Next r
    If count - CountMax > CountMax - (count - Cells(r - 1, 3).Value) Then
        r = r - 1
    End If
    Rows(r).Select
End Sub

参考

http://officetanaka.net/excel/vba/tips/tips37.htm

id:hananeko_0

SALINGERさん、こちらも解決しましたっ!\(^o^)/

参考HPで勉強させていただきますっ。ありがとうございます。

深夜までお付き合いいただき、ありがとうございました。

2008/08/10 01:18:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません