###前提・実現したいこと
VBAで、既存の売上一覧表をもとに請求内訳書を作成しています。
売上一覧(シート名:データ)の、AQ列に「99」がある場合、警告を出して操作をストップさせたいです。
売上一覧の行数はその時々で増減します。
警告を閉じた後、売上一覧に修正をし、再度実行して「99」がなければ
一連の動作で請求内訳書を作成させたいです。
作成の流れは、新規ブックを作成、ひな形のシートを新規ブックにコピー
そこに、条件ごとにデータを転記します。
↓売上一覧
###発生している問題・エラーメッセージ
請求内訳書を作成する一連の動きは出来ましたが、
警告を出して操作をストップさせるやり方が分かりません。
###該当のソースコード
OptionExplicit Sub 請求内訳書作成() Application.ScreenUpdating=False Const HinagataWS As String = "ひな形" Const ItiranHinaWS As String = "一覧のひな形" Const DateWS As String = "データ" Const DateMidasi As Integer = 1 'データシートの見出しの行数 Dim lastRow As Long 'ソートで使う変数 Dim UtiwakeWS As Worksheet '「内訳書」シート Dim ItiranWS As Worksheet '「一覧」シート Dim DateKiten As Range 'データシートの転記開始セル Dim AKiten As Range 'A一覧の転記先開始セル Dim BKiten As Range 'B一覧の転記先開始セル Dim i As Long Dim j As Long Dim m As Long Dim Cnt(1To4) As Long Dim c As Integer For c = 1 To 4 Cnt(c)=1 Next c '●新規ブック作成 Workbooks.Add '「一覧のひな形」シートを新規ブックにコピー This Workbook.Worksheets(ItiranHinaWS).Copybefore := ActiveWorkbook.Sheets(1) Set ItiranWS =A ctiveSheet '変数「ItiranWS」をコピーしたシートにセット ItiranWS.Name = "一覧" '「ひな形」シートを新規ブックにコピー ThisWorkbook.Worksheets(HinagataWS).Copybefore:=ActiveWorkbook.Sheets(1) Set UtiwakeWS = ActiveSheet '変数「UtiwakeWS」をコピーしたシートにセット UtiwakeWS.Name="内訳書" '不要なシートを削除 Application.DisplayAlerts=False For i = Sheets.Count To 3 Step -1 ActiveWorkbook.Sheets(i).Delete Nexti Application.DisplayAlerts=True '●転記 '元ブックのデータシートの転記開始セルを設定 Set DateKiten = ThisWorkbook.Worksheets(DateWS).Range("A8") 'Aの転記先開始セルを設定 Set AKiten = ActiveWorkbook.Worksheets("一覧").Range("A3") 'Bの転記先開始セルを設定 Set BKiten = ActiveWorkbook.Worksheets("一覧").Range("L3") 'A転記 For j = 1 To DateKiten.CurrentRegion.Rows.Count - DateMidasi If DateKiten.Cells(j,4).Value = 110000 And_ DateKiten.Cells(j,43).Value >= 1000 And DateKiten.Cells(j,43).Value < 2000Then AKiten.Cells(Cnt(1),1).Value = DateKiten.Cells(j,38).Value '売上金額 Cnt(1) = Cnt(1) + 1 ElseIf DateKiten.Cells(j,4).Value = 110000 And_ DateKiten.Cells(j,43).Value >= 5000 And DateKiten.Cells(j,43).Value < 6000 Then AKiten.Cells(Cnt(2),3).Value = DateKiten.Cells(j,38).Value '売上金額 Cnt(2) = Cnt(2) + 1 End If Next j 'B転記 For m = 1 To DateKiten.CurrentRegion.Rows.Count - DateMidasi If DateKiten.Cells(m,4).Value = 200000 And_ DateKiten.Cells(m,43).Value >= 1000 And DateKiten.Cells(m,43).Value < 2000 Then BKiten.Cells(Cnt(3),1).Value = DateKiten.Cells(m,38).Value '売上金額 Cnt(3) = Cnt(3) + 1 ElseIf DateKiten.Cells(m,4).Valu = 200000 And_ DateKiten.Cells(m,43).Value >= 5000 And DateKiten.Cells(m,43).Value < 6000 Then BKiten.Cells(Cnt(4),3).Value = DateKiten.Cells(m,38).Value '売上金額 Cnt(4) = Cnt(4) + 1 End If Next m Application.ScreenUpdating=True EndSub
(一部省略しています)
###試したこと
ループで、AQ列に99があるか確認し、
IFステートメントで、99があればメッセージボックスを出すというコードを書いてみましたが、
上手くいきませんでした。
知識不足のため、これ以上のやり方が思い浮かびませんでした。
ご教授宜しくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
回答1件
あなたの回答
tips
プレビュー