ExcelVBAでスピンボタンを使用して値を指定する方法

このQ&Aのポイント
  • ExcelVBAを使用して、スピンボタンを使って数値を指定する方法について学んでいます。
  • スピンボタンを使用して、テキストボックスに表示される値を増減させることが可能です。
  • テキストボックスに表示される値は小数点第1位まで表示され、2.0〜15.0の値しか表示できないようにすることができます。
回答を見る
  • ベストアンサー

ExcelVBA スピンボタンの値について

参考書を片手に勉強中のエクセルVBA初心者です。 ぜひアドバイスをお願いします…! Excel2000でユーザーフォームを作成し、スピンボタンを使用して数値を指定できるよう、以下のソースを記述しました。 ----------------------------------------- Private Sub UserForm_Initialize() With SpinButton1 .Min = 20 .Max = 150 .Value = 150 .SmallChange = 5 End With End Sub ----------------------------------------- Private Sub SpinButton1_Change()   TextBox1.Value = SpinButton1.Value / 10 End Sub ----------------------------------------- Private Sub TextBox1_Change()   TextBox1.Text = Format(TextBox1.Text, "0.0") End Sub ----------------------------------------- これを、スピンボタンも使用でき、かつ手入力にも対応するように動作させたいと考えています。 具体的にはテキストボックスに6(ランダムな値)と手入力後、 スピンボタンを使用してで6.0の値から増減させたいのですが、 そのようなことは可能でしょうか? 可能であれば、どのようにすればよいのでしょうか? (テキストボックス内の値は、小数点第1位まで表示させ、2.0~15.0の値しか表示できないようにしたいです) どうかご回答よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

3番目のコードに1行追加したらいかがでしょうか Private Sub TextBox1_Change() __TextBox1.Text = Format(TextBox1.Text, "0.0") __SpinButton1.Value = TextBox1.Text * 10 End Sub

m-yayamo
質問者

お礼

ををを! tesuyaさんのおかげで、願っていたことができました! ご回答ありがとうございます! ペコペコ “(:D)┐

関連するQ&A

  • エクセルVBA「スピンボタン」について

    エクセルVBA「スピンボタン」について スピンボタンとテキストボックスを組み合わせて Private Sub SpinButton1_Change() Me.TextBox1.Value = Me.SpinButton1.Value End Sub Private Sub UserForm_Initialize() With Me.SpinButton1 .Min = 1 .Value = .Min End With Me.TextBox1.Value = Me.SpinButton1.Min End Sub というコードを書きました。 「1、2、3、・・・10、11、・・・」という数の増加を「01、02、03・・・10、11・・・」という風にしたいのですがどのようにコーディングすればよいのでしょうか?お願いします。.

  • Excel VBA スピンボタンの使い方

    Excel VBA 初心者です。 ActiveXでシート上にTextBox1とSpinButton1を配置した場合で、 SpinButton1.Valueの値をコードで設定したとき、それまでの値と異なっていてもChangeイベントを発生させない方法はあるでしょうか。 例えば以下のようなコードです。 ---------------------- Private Sub 初期設定() 'ここでSpinButton1.Enabled = False を入れてもグレーアウトするのみでChangeイベントは発生する Dim N As Long N = 20 SpinButton1.Value = N '↑TextBox1.Valueが<>Nの時でも 'ここでChangeイベントに飛ばさない方法はあるでしょうか? End Sub '↓通常はこの動作 Private Sub SpinButton1_Change() TextBox1.Value = SpinButton1.Value 'さらにこのあと数値増減による処理有り End Sub ---------------------- 「SpinButton1.Enabled = False」ではグレーアウトはしますがコードからの設定ではChangeイベントは発生しました。 宜しくお願い致します。

  • excel VBA スピンボタンの値をジャンプ

    いつもお世話になります。 コードで、スピンボタンの値をC4セルに入れて変化させています。 下記やりたいことに対して、コードにどのような編集を加えればいいかアドバイスをお願いいたします。 ◆やりたいこと C4セルに任意の数字を手入力⇒enterボタンを押した後に、スピンボタンの値をその数字がら追従して変化させたい。 たとえば、スピンボタンで11⇒12⇒13と変化させているところで、C4セルに77と入力した後にスピンボタンを押すと、78⇒79⇒80と変化できるようにさせたいです。 '◆スピンボタンコード Private Sub SpinButton1_Change() Range("C4").Value = SpinButton1.Value SpinButton1.Min = 1 End Sub

  • excel2000 vba スピンボタン

    いつもお世話になっています。 下記内容の変更をしたいのですが、自分ではうまくいかず、お力をお貸しください。 よろしくお願いします。 一枚のデータシートと一枚の入力用フォームがあります。 入力フォームのスピンボタンのNOをキーにして、データシートのレコードを一件ずつ切り替えて、表示させるようにしています。 さてデータシートのオートフィルターでフィルターをかけた時に、それにあわせて、スピンボタンのNOを飛ばすようにしたいのですが、どのように修正していいか、わかりません。 現状ですと、下記プロシージャですが、いまのままだと、スピンボタンの値が一つずつしかかわりません。 'スピンボタンの値が変わったらテキストボックスに反映 Private Sub SpinButton1_Change() TextBox1.Value = SpinButton1.Value Call hyouji End Sub Private Sub hyouji() 'データを検索して表示する Dim fRange As Range Dim fRow As Long Set fRange = Sheets("data").Columns(3).Find(what:=TextBox1.Value, _ LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows) If (fRange Is Nothing) Then ' MsgBox "Noがみつかりません", vbExclamation Exit Sub End If fRow = fRange.Row '検索されたNoの行位置を求める With Worksheets("data") TextBox2.Value = .Cells(fRow, 4).Value TextBox3.Value = .Cells(fRow, 5).Value TextBox4.Value = .Cells(fRow, 6).Value TextBox5.Value = .Cells(fRow, 7).Value TextBox6.Value = .Cells(fRow, 8).Value End With SpinButton1.SetFocus End Sub ※現物ファイルを下記に投稿(No5643)させていただきました。見ていただけると幸いです。 http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi

  • エクセルVBAでスピンボタン

    ワークシート上にスピンボタンを配置しました。 Valueは、Max100、Min0 で設定しました。 やりたいのは、スピンボタンでValueを減らしていって、0になるまでは何も言わず、Valueが0の状態でさらに減らそうとした場合、メッセージを出したいのです。 Private Sub SpinButton1_Change() If SpinButton1 <= 0 Then MsgBox "マイナスにはできません!", vbCritical End If End Sub としましたら、0になった瞬間にメッセージがでてしまいます。 If SpinButton1 < 0 Then としたら、マイナスにはならないので当たり前ですが何も出ません。 どうしたらいいでしょうか?

  • excel2003 VBA のスピンボタンについて

    とあるワークシートにスピンボタンがあり、C2セルの値を変えるようにしています。 スピンボタンのup,downの記述は下記の通りです。 ここで、スピンボタンを長押し(どちらかに押しっぱなし)したときに、ばぁーと数字が ドンドン進んでいくようにしたいのですが、 今は長押ししても、何も変わりません。 どのように修正すればよいでしょうか? Private Sub SpinButton1_SpinDown() Range("C2").Value = Format(DateValue(Range("C2").Value) + 1, "yyyy/mm/dd") Call hyouji Application.ScreenUpdating = True End Sub Private Sub SpinButton1_SpinUp() Range("C2").Value = Format(DateValue(Range("C2").Value) - 1, "yyyy/mm/dd") Call hyouji Application.ScreenUpdating = True End Sub

  • エクセル/マクロ ユーザーフォーム内のテキストボックスの値の制限

    エクセルマクロに関する質問です。ユーザーフォーム内にテキストボックス(DayBox1)とスピンボタン(DaySpin1)を設置し、日付を入力できるようにしたいと思っています。スピンボタンには以下のようなコードを与えました。 Private Sub DaySpin1_Change() DayBox1.Value = Day(Now()) + DaySpin1.Value End Sub テキストボックス内の値が現実的な値(1≦DayBox1.Value≦31)に収まるようにするにはどのようなコードを与えるべきでしょうか? よろしくお願いします。

  • ユーザーフォームの結果を

    お世話になります。 下記の様な記述の ユーザーフォームで、 テキストボックスを3つ設け、それぞれに 年、月、日を入力し、その値を シートのあるセルに表示したいのですが、 例えば、月や日が一桁の場合には最初に「0」を 付けたいのですが、うまくいきません。 何卒、ご教示下さいます様お願い申し上げます。       記 Private Sub UserForm_initialize() SpinButton1.Max = 2050 ' 初期設定 SpinButton2.Max = 12 SpinButton2.Min = 1 SpinButton3.Max = 31 SpinButton3.Min = 1 SpinButton1.Value = Year(Date) SpinButton2.Value = Month(Date): If month_mm < 10 Then month_mm = "0" & month_mm SpinButton3.Value = Day(Date): If day_dd < 10 Then day_dd = "0" & day_dd End Sub Private Sub SpinButton1_Change() Call DAY_PUT End Sub Private Sub SpinButton2_Change() Call DAY_PUT End Sub Private Sub SpinButton3_Change() Call DAY_PUT End Sub Sub DAY_PUT() TextBox1.Value = SpinButton1.Value TextBox2.Value = SpinButton2.Value TextBox3.Value = SpinButton3.Value End Sub Private Sub CommandButton1_Click() tbox1 = TextBox1.Value tbox2 = TextBox2.Value tbox3 = TextBox3.Value Workbooks("集計表").ActiveSheet.Range("a1") = tbox1 & tbox2 & tbox3 Unload Me End Sub

  • エクセル シート上のTextBox(日付)

    今まではForm上にTextBoxを貼り、スピンボタンにて日付を変化させるのは できるのですが、これをシート上で日付を動かすと どのような記述の変化が必要なのでしょうか? TextBoxはhidukeという名でしています!日付は出るのですが スピンボタンは動きません! すいません教えて下さい! Private Sub SpinButton1_SpinDown() Me.hiduke.Value = DateAdd("d", -1, Me.hiduke.Value) End Sub Private Sub SpinButton1_SpinUp() Me.hiduke.Value = DateAdd("d", 1, Me.hiduke.Value) End Sub Private Sub hiduke_Change() Me.hiduke.Value = Format(Now(), "yyyy/mm/dd") End Sub

  • ListBoxに値を追加していくには。

    Private Sub CommandButton31_Click() ListBox12.ColumnCount = 5 ListBox12.ColumnWidths = "4.0cm;4.0cm;2.0cm;3.0cm;2.0cm" End Sub Private Sub TextBox175_Change() SetList End Sub Private Sub TextBox176_Change() SetList End Sub Private Sub TextBox177_Change() SetList End Sub Private Sub TextBox178_Change() SetList End Sub Private Sub TextBox179_Change() SetList End Sub Private Sub SetList() ListBox12.Clear ListBox12.AddItem TextBox175.Text ListBox12.List(0, 1) = TextBox176.Text ListBox12.List(0, 2) = TextBox177.Text ListBox12.List(0, 3) = TextBox178.Text ListBox12.List(0, 4) = TextBox179.Text End Sub ここで、TextBox175~179の値をコマンドボタン1を押す度、 ListBox12の最終行の直下に挿入されていくようにしたいです。 列はそのままです。 1行目 (0,1),(0,2),(0,3),(0,4) 2行目 (1,1),(1,2),(1,3),(1,4) 3行目 (2,1),(2,2),(2,3),(2,4) どのようにやればいいでしょうか。

専門家に質問してみよう