いつも大変お世話になっております。masafumiです。今回も調べても全くわからないことが起きてしまいました。
どなた様かご教授のほどお願いいたします。
▼今回の問題点
ボタンを押し、Boolean型がTrueの場合に下図「★2.のコード: Call businessCardCreate」が走るという内容になります。
しかしながら、それが走りません。どうすれば★2.を走らせることができるのでしょうか。。
<モジュール>
Function cheacker(ByVal TextBox1 As Object) Dim bln As Boolean If TextBox1 = "" Then bln = False cheacker = bln Else bln = True cheacker = bln End If End Function
<フォーム>
Private Sub BusinessCardCreateButton_Click() Dim bln As Boolean bln = cheacker(TextBox1) ← ◆「cheaker(TextBox1)」を「True」と直接入れると問題なく走る。 If bln = True Then MsgBox "開始します" ←★1. 処理が走る。 Call businessCardCreate←★2. 処理が走らない。 MsgBox "終了しました"←★3. 処理が走る。 Else MsgBox "使用不可" End If End Sub
<フォーム側続き・すべて続きになっております。>
・・・長くて誠に申し訳ありません。
'【clear】イメージ画像への反映 Sub businessCardCreate() Dim MaxRow As Integer Dim MaxCol As Integer Dim sheetPurchaseOrder As Worksheet Set sheetPurchaseOrder = ThisWorkbook.Worksheets("purchaseOrder") With ThisWorkbook.Worksheets("imageCardView") .Range("i11").Value = bcName.Value .Range("i10").Value = bcAffiliation.Value .Range("j17").Value = "E-mail : " & bcMailAdress.Value .Range("v15").Value = bcTelNumber.Value .Range("v16").Value = bcFaxNumber.Value .Range("k14").Value = bcPostalCode.Value .Range("v14").Value = bcAddress.Value End With '【clear】印刷用取り込みデータ作成。 If TextBox1.Value = "" Then MaxRow = ThisWorkbook.Worksheets("printDataList").Cells(Rows.count, 1).End(xlUp).Row + 1 With ThisWorkbook.Worksheets("printDataList") .Range("A" & MaxRow).Value = bcName.Value .Range("B" & MaxRow).Value = bcAffiliation.Value .Range("C" & MaxRow).Value = "E-mail : " & bcMailAdress.Value .Range("D" & MaxRow).Value = bcTelNumber.Value .Range("E" & MaxRow).Value = bcFaxNumber.Value .Range("F" & MaxRow).Value = bcPostalCode.Value .Range("G" & MaxRow).Value = bcAddress.Value If selectTwenty.Value = True Then .Range("H" & MaxRow).Value = "20" End If If selectFifity.Value = True Then .Range("H" & MaxRow).Value = "50" End If If selectOneHundred.Value = True Then .Range("H" & MaxRow).Value = "100" End If End With End If MaxRow = ThisWorkbook.Worksheets("purchaseOrder").Cells(Rows.count, 3).End(xlUp).Row + 1 '■. '【clear】注文書への転記 If TextBox1.Value = "" Then With sheetPurchaseOrder .Range("C" & MaxRow).Value = "名刺" .Range("D" & MaxRow).Value = bcName.Value .Range("E" & MaxRow).Value = 10 If selectTwenty.Value = True Then .Range("F" & MaxRow).Value = "20" End If If selectFifity.Value = True Then .Range("F" & MaxRow).Value = "50" End If If selectOneHundred.Value = True Then .Range("F" & MaxRow).Value = "100" End If End With '【clear】各シートへの情報入力。 Call ImgExport Unload BusinessCard End If End Sub
★1★3が呼ばれることが確認できているのなら、★2が呼ばれないはずがありません。
businessCardCreate関数に何かしらの問題があると思うので、businessCardCreateのコードを提示してください。
また★2の「処理が走らない」と断定した理由もお答えください。
>bln = cheacker(TextBox1)
TextBox1という変数はどこで定義していて、どのような値が入っていますか?
名称からしてテキスト入力フォームのような感じもしますが、文字列でしょうか?
ttyp03様
さっそくご覧になっていただきありがとうございます!
businessCardCreateのコードを追記させていただきました。長くて誠に申し訳ありません。初心者についきご容赦ください。。
>また★2の「処理が走らない」と断定した理由もお答えください。
当件については、businessCardCreateの中で実行されるべき、「イメージ画像の反映」、「印刷用取り込みデータ作成。」、「注文書への転記」、「各シートへの情報入力」がいずれも実行されない中、★3が走ったためです。エラーコメントもなくデバックについてはまだ容要領がわかわず確認出来ておりません。こんな感じです(汗)。重ねてありがとうございます。
tabuu様
さっそくご指摘ありがとうございます。
>TextBox1という変数はどこで定義していて、どのような値が入っていますか?
名称からしてテキスト入力フォームのような感じもしますが、文字列でしょうか?
当件につきまして、TextBox1はUserForm1の中に設置(=定義)してあります。TextBox1はテキスト入力フォームで間違いありません。しかしながら、スピンボタンと連動しております。そのスピンボタンによる値変更に基づき、数字が増減する形となっております。
空白の場合は問題なくMsgBoxを呼び出すという処理が走るのですが、それ以外はbusinessCardCreateを走らせる目的の中で、その処理が走りません。。
文章長くなってしまい申し訳ありません。
まずはデバッグ方法を覚えましょう。
VBAのステップインなどのデバッグメニューの使い方を初心者向けに丁寧に解説します
https://asatte.biz/vba-debug-menu/
今回なら、businessCardCreateプロシージャにブレークポイントを設定して、F8キーを押して1行ずつ実行していって想定通りの動きになっているか確認ですね。
tabuu様
さきほど、ttyp03さんより回答いただくことができました!!
いろいろ相談に乗っていただきありがとうございました!!
hatena19様
ありがとうございます!!こちらのサイトわかりやすいです!
さっそくデバック習得します(^^)
回答1件
あなたの回答
tips
プレビュー