Microsoft 製品に組み込まれている Visual Basic の実装。
junichitaruno さん、こんにちは。
マイクロソフト コミュニティへの投稿ありがとうございます。
MSDN フォーラム に VBA 用のカテゴリー があります。
VBA に関する質問は、こちらを利用して情報を集めてください。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
vba 初心者です
下記のvbaで印刷枚数を1枚から20枚まで設定したいのですが、スピンボタンで1からではなく2からUpしてしまいます。
解決策があればアドバイスをお願いいたします。
Private Sub SpinButton1_Change()
SpinButton1.Min = 1
SpinButton1.Max = 20
TextBox1.Text = CStr(SpinButton1.Value)
End Sub
Private Sub CommandButton1_Click()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
If TextBox1.Text = "" Then
MsgBox "印刷枚数が未入力です!!" _
& vbCrLf & "印刷ボタン右側にキーボード or ▲▼で印刷枚数を入力して下さい。", _
vbOKOnly + vbExclamation, "【印刷枚数確認】"
Exit Sub
End If
Set balNew = Assistant.NewBalloon
With balNew
Dim rc As VbMsgBoxResult
rc = MsgBox("印刷を実行しますか?", vbYesNo + vbQuestion)
If rc = vbYes Then
ActiveSheet.PageSetup.PrintArea = "$B$1:$S$53"
ActiveWindow.SelectedSheets.PrintOut Copies:=TextBox1.Text, Collate:=True
ActiveSheet.PageSetup.PrintArea = ""
Range("B1").Select
Else
MsgBox "印刷を中止します", vbCritical
End If
End With
ActiveSheet.Shapes("TextBox1").OLEFormat.Object.Object = Null
End Sub
**モデレーター 注記**
コミュニティ センター フォーラムに投稿されましたが、内容から判断してフォーラムを変更しました。
Office、OS バージョンが不明なため、便宜的に現在のトピックやカテゴリーを選択しています。
Microsoft 製品に組み込まれている Visual Basic の実装。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
junichitaruno さん、こんにちは。
マイクロソフト コミュニティへの投稿ありがとうございます。
MSDN フォーラム に VBA 用のカテゴリー があります。
VBA に関する質問は、こちらを利用して情報を集めてください。
>アドバイスを参考に試して見ましたが結果は同じで2からUpになりますね?
>>>MSDN フォーラム に VBA 用のカテゴリー があります。
に移ってるようなので、そちらにコメントします。
次回から
>>>MSDN フォーラム に VBA 用のカテゴリー があります。
を利用してもらうこととして、
今回の質問にはここでコメントします。 m(_ _)m
おそらく、添付画像のように設定されていることから、
フォームが起動した段階で、
SpinButton1.Valueには、1が埋まっています。
その状態でSpinButton1の加算側をクリックすると、
SpinButton1_Changeのイベントが起きると共に
VBAが、SpinButton1.Valueに1を加算します。
(つまり、SpinButton1.Valueは2になります)
その後、
TextBox1.Text = CStr(SpinButton1.Value)
の処理が行われるので、
TextBox1.Textに2が表示されます。
他方、
フォームが起動した段階でSpinButton1の減算側をクリックしても、
既にSpinButton1.Valueが最小値の1なので、
SpinButton1_Changeのイベントが起きず、
TextBox1.Textが空欄のまま変化しないものと思います。
私だったら
Private Sub UserForm_Activate()
SpinButton1.Min = 1
SpinButton1.Max = 20
SpinButton1.Value = 1
TextBox1.Text = CStr(SpinButton1.Value)
End Sub
Private Sub SpinButton1_Change()
TextBox1.Text = CStr(SpinButton1.Value)
End Sub
といったコードにします。
早速アドバイスありがとうございます。
MSDN フォーラム に VBA 用のカテゴリー があるんですね
失礼しました。
アドバイスを参考に試して見ましたが結果は同じで2からUpになりますね?
次回から
>>>MSDN フォーラム に VBA 用のカテゴリー があります。
を利用してもらうこととして、
今回の質問にはここでコメントします。 m(_ _)m
おそらく、添付画像のように設定されていることから、
フォームが起動した段階で、
SpinButton1.Valueには、1が埋まっています。
その状態でSpinButton1の加算側をクリックすると、
SpinButton1_Changeのイベントが起きると共に
VBAが、SpinButton1.Valueに1を加算します。
(つまり、SpinButton1.Valueは2になります)
その後、
TextBox1.Text = CStr(SpinButton1.Value)
の処理が行われるので、
TextBox1.Textに2が表示されます。
他方、
フォームが起動した段階でSpinButton1の減算側をクリックしても、
既にSpinButton1.Valueが最小値の1なので、
SpinButton1_Changeのイベントが起きず、
TextBox1.Textが空欄のまま変化しないものと思います。
私だったら
Private Sub UserForm_Activate()
SpinButton1.Min = 1
SpinButton1.Max = 20
SpinButton1.Value = 1
TextBox1.Text = CStr(SpinButton1.Value)
End Sub
Private Sub SpinButton1_Change()
TextBox1.Text = CStr(SpinButton1.Value)
End Sub
といったコードにします。