|
エクセルで納品書を作成する本を見て、納品書を作成している、VBA初心者です。
いつもお世話になっております。
早速つまづいております。
やっと納品書の「印刷」ボタンを作成するところまで来ましたが、テンプレートでは、「印刷」ボタンを押すと「納品日」を新たに記入させてから印刷する、というコードなのですが、納品日の入力確認ではなく(納品日はすでに記入欄があります)、記入した納品書データを「登録・更新」ボタンを押させて、登録してから印刷するようにしたいです。
元のコードは、下記の通りです。
'
'「印刷」ボタンの処理
'
Private Sub cmd印刷_Click()
Dim myDate As Variant '納品日
'納品日を指定する
Do
'入力ダイアログボックスを表示する
myDate = InputBox("納品日を入力してください。")
'[キャンセル]ボタンがクリックされた場合は終了する
If myDate = "" Then
Exit Sub
End If
'日付データが入力されるまで繰り返す
Loop Until IsDate(myDate)
'納品日をセルF3に入力する
Worksheets("伝票印刷").Range("F3").Value = myDate
'フォーカスをボタンからセルに移動する
Range("D3").Select
'印刷プレビュー画面を表示する
Worksheets("伝票印刷").PrintPreview
End Sub
今まで学んできた知恵を総動員して私が考えたコードは、以下の通りです。
「印刷」ボタンが押されると、まず、登録されると伝票の情報が転記される「TB_受注」シートの中から、該当の伝票番号があるか無いか探し、あれば印刷し、無ければ「登録・更新」ボタンを押してください、というメッセージボックスを表示して、プロシージャを抜ける、ということがやりたいです。
Private Sub cmd印刷_Click()
'「TB_受注」シートから「伝票番号」を検索
Dim tbSRange As Range '検索範囲のセル
Dim tbFRange As Range '見つかったセル
'検索範囲のセル(表の1列目)を変数に代入する
Set tbSRange = Worksheets("TB_受注").Range("A4").CurrentRegion.Columns(1)
'伝票番号を先頭から検索する(L7は伝票番号)
Set tbFRange = tbSRange.Find(What:=Range("L7"), _
LookIn:=xlFormulas, Lookat:=xlWhole, SearchDirection:=xlNext)
'戻り値を代入する
If tbFRange Is Nothing Then
'見つからなかった場合、「登録・更新」ボタンを押してください、というメッセージを表示する
MsgBox "「登録・更新」ボタンを押してください"
'フォーカスをボタン「登録・更新」ボタンに移動する
Range("cmd登録・更新").Select ←ここがよく分かりません
'プロシージャから抜ける
Exit Sub
Else
'見つかった場合、印刷プレビュー画面を表示する
Worksheets("伝票印刷").PrintPreview
End If
'オブジェクト変数を解放する
Set tbSRange = Nothing
Set tbFRange = Nothing
End Sub
全体的に合っていますでしょうか?
すみません、恐ろしくて、まだ、試していません。
変数tbSRangeと、tbFRangeは、前回も使ったんですが、また、今回も使ってもだいじょうぶでしょうか?
何卒、よろしくお願いいたします。
|
|