次の方法で共有

vba スピンボタンで1からUpしない

Anonymous
2018-05-09T11:20:34+00:00

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 バージョンが不明なため、便宜的に現在のトピックやカテゴリーを選択しています。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-05-10T00:17:13+00:00

    junichitaruno さん、こんにちは。

    マイクロソフト コミュニティへの投稿ありがとうございます。

    MSDN フォーラム に VBA 用のカテゴリー があります。

    VBA に関する質問は、こちらを利用して情報を集めてください。

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2018-05-10T12:04:52+00:00

    >アドバイスを参考に試して見ましたが結果は同じで2からUpになりますね?

    >>>MSDN フォーラム に VBA 用のカテゴリー があります。

    に移ってるようなので、そちらにコメントします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2018-05-10T10:33:23+00:00

    次回から

    >>>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になりますね?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2018-05-10T02:48:59+00:00

    次回から

    >>>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

    といったコードにします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません