人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

宜しくお願い致します。

●質問者: hananeko_0
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:AS C5 const EXIT NeXT
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●60ポイント ベストアンサー
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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ