• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スピンボタンとテキストボックスの連動)

スピンボタンとテキストボックスの連動

このQ&Aのポイント
  • Excel2000.2003のUserFormにSpinButton1とSpinButton2及びTextBoxを縦6横10の表らしきものを作りたい
  • パソコン初心者にも使えるように、また入力ミスを防ぐためにSpinButton1とTextBoxのVisibleを変え、表示するようにしたい
  • SpinButton1とSpinButton2の値に応じて、TextBoxの表示・非表示を切り替えたい

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>こんなかんじに したいのです。 一応理解したつもりです。 下記は、 TextBox1 ~5 TextBox6 ~10   : TextBox36 ~40 と、提示された物と並びが異なりますが、横5・縦8に並んだものにしてあります。  X = 1 、Y = 8 の設定の変更で任意のテキストボックスが表示されますので、スピンボタンのイベントに合わせて呼ばれるようにして見てはいかがでしょうか? 考え方の参考にして下さい。 Private Sub UserForm_Initialize() Dim i, j Dim Y, X For i = 1 To 40 Controls("TextBox" & i).Visible = False Next X = 1 Y = 8 For j = 0 To Y * 5 - 1 Step 5 For i = 1 To X Controls("TextBox" & i + j).Visible = True Next Next End Sub

palsation
質問者

お礼

hana-hana3さん 有難うございます まだまだ 初心者 少しずつ理解して作り上げたいと思います また わからない点がありましたら よろしくお願いします。

palsation
質問者

補足

hana-hana3さん おはようございます 回答へのお礼 再投稿出来ない為に こちらの補足内容にて お礼をさせていただきます。 他の人の過去の質問等も参考にしながら もっと設定しやすいようにする為には、 テキストボックスの名前を、それをし易いようにして設定する事にしました、 hana-hana3さんのやり方も参考にさせてもらい 縦横で二重ループして、その中で If で分岐するやり方を 自分ながら勉強し進めていくつもりです。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>意味解りますか? 申し訳ありませんが、仕様が理解できません。 入力ミスを防ぐと言うよりも操作を煩雑にする方法に思えますが・・・。 入力値を自動的に配列に格納するとか、ラベルに一覧表示(あるいは数項目表示)する程度で良いのでは?

palsation
質問者

補足

hana-hana3さん ご指摘有難うございます 説明不足を痛感しています。 システムは 色とサイズと数量を同時に入力する様にと考えています  ◆◆◆◆◆…←カラー ▼□□□□□… ▼□□□□□… *□…TextBox 数量  ▼□□□□□… : ↑サイズ TextBoxに入る数値は1~1000まであり 型式によって、カラーやサイズが異なり 該当範囲が増減する為 サイズ領域…SpinButton1 カラー領域…SpinButton2で 該当TextBoxを 表示/非表示にしたいのです。 例えば SpinButton1="2" SpinButton2="3"  ◆◆◆◆◆◆… ▼■■■□□□… ▼■■■□□□… ▼□□□□□□… ▼□□□□□□… ▼□□□□□□… : 例えば SpinButton1="4" SpinButton2="2"  ◆◆◆◆◆◆… ▼■■□□□□… ▼■■□□□□… ▼■■□□□□… ▼■■□□□□… ▼□□□□□□… : こんなかんじに したいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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イベントは発生しました。 宜しくお願い致します。

  • 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の値しか表示できないようにしたいです) どうかご回答よろしくお願いいたします。

  • エクセルVBPでテキストボックスを時間差で表示

    算数のフラッシュ教材をVBPで作ろうと思っています。 A+B=Cの A,Bを乱数発生させて、TextBox1とTextBox2に表示させて、 数秒後に答えであるCをTextBox3に表示させたいのです。そこで、 TextBox3.Visible = False TextBox1.Text = a TextBox2.Text = b Application.Wait Time:=Now + TimeValue("00:00:2") '---2秒間停止 TextBox3.Text = c TextBox3.Visible = true のようにやるのですが、すべてのテキストボックスが同時に表示されて、時間差表示に ならないのです。どなたか、よろしくお願いします。

  • テキストボックスがセルと連動したりしなかったりする

    質問票をExcel VBAで作成、各設問に対する回答はラジオボタン(YES/NO/NA)で選択、NOの場合だけテキストボックスを表示仕組みなのですが、テキストボックスがセルときちんと連動しない時があって困ってます。 詳しく言うと、各設問に対する回答をラジオボタン(YES/NO/NA)で選んでもらい、NOの場合だけ、その理由をテキストボックスに書いてもらう仕組みで、YesまたはNAが選ばれた場合には(フォームをすっきり見せたいため)、テキストボックスを隠します。 ただそのテキストボックス(やラジオボタン)がきちんとセルと連動してくれないときがあります。(きちんと動いた場合のスクリーンショットを添付したのでご確認ください。)微妙に上下にずれてしまいレイアウトが崩れるときがあって困っています。いつ動いているのか、どういうときに動いてしまうのか等のパターンが全然分かりません。 <ロジック> Yes/No/NAのラジオボタンのデフォルトはNoで、すべての設問に対しテキストボックスは表示しておきます。テキストボックスは9行にわたって配置していて、YesまたはNAのクリックイベントによって、その9行の非表示、およびテキストボックスを非表示設定をコントロールしています。 正常に動いているケースのスクリーンショットを添付しましたので、ご確認お願いします。 また、すべてのテキストボックスおよび(”種類”の)ラジオボタンの Placement プロパティは、2(Move but don't size with cells)に設定しています。 この質問票使用時にはパスワードでシート保護もしています。(保護対象外はロック/アンロックされたセルと行) 開発環境:Excel2010 (Version: 14.0.6023.1000(64-bit)) ファイル保存形式:Excel 97-2003 Workbook (*.xls) <ソース> 表示する場合(Noが選択)の関数が下記です。非表示の場合も同様のつくりです。 ラジオボタンのクリックイベント内から下記Subプロシージャが呼ばれます。 Private Sub Set_Visible(ByVal j As Integer, ByVal k As Integer, ByVal m As Integer) i_RowNumber = (ここでパラーメータの変数を使って値をセット) ActiveSheet.Rows(i_RowNumber & ":" & i_RowNumber + 9).Hidden = False For i = 1 To 3 ActiveSheet.OLEObjects("TextBox" & j & "_" & i).Visible = True Next i For i = 4 To 7 ActiveSheet.OLEObjects("RadioBtn" & j & "_" & i).Visible = True Next i End Sub ※各テキストボックス、ラジオボタンの名前が TextBox1_1やRadioBtn1_4等としているため、For文でまわしてます。 基本的にこのコードで正しく動作しています。ただ、何かの加減でテキストボックスやラジオボタンが予期せぬところに表示されるので、コードの問題というよりは何か不安定要素が絡んでいるのではないかと思ってます。 左右に動く症状は見かけておらず、上下に少し動いて、(添付ファイルを参照ください)”理由1”や”関連リンク”といったテキストボックスのすぐ上に配置した文字を隠してしまったりします。 この症状はわたしのPCだけでなく、他の人のPCで動作確認しても、起きたり起きなかったりします。 この不安定な動作の修正方法が見つからず、ここ二週間ほど困っています。もしどなたか、修正案、もしくは、このロジックを見てもっとシンプルな代替案があれば、是非教えていただけると助かります。 ※質問するのは初めてなので不備がありましたら遠慮なくご指摘いただけると助かります!

  • 【Excel VBA】ユーザーフォーム テキストボックスの有効・無効について

    Excel2003を使用しています。 ユーザーフォームにテキストボックスを11個とコマンドボタンを2個配置しています。 TextBox9に“0000”(文字列です)が入力されたら、TextBox10を有効に、それ以外は無効に設定したく、TextBox10のEnabledプロパティをFalse、LockedプロパティをTrueにして、コードを下記のように書いたのですが、うまくいきません。どこか、間違っているでしょうか? コードは該当部分だけ、載せています。よろしくお願いします。 -------------------------------------------------- If TextBox9.Text = "0000" Then TextBox10.Enabled = True TextBox10.Locked = False TextBox10.BackStyle = fmBackStyleOpaque Else TextBox10.Enabled = False TextBox10.Locked = True TextBox10.BackStyle = fmBackStyleTransparent End If

  • コンボボックスの変更に応じてテキストボックスの有効を切り替える(ExcelVBA2007)

    お世話になります。 Excel VBA 2007で質問です。 今、  Label1 ComboBox1 TextBox1  Label2 ComboBox2 TextBox2 ・・・  Label100 ComboBox100 TextBox100 のようなフォームがあるとします。 ComboBox1~100は「Any」「is」「is not」のいずれかの値が取れ、初期値はAnyとします。 TextBox の Enabled プロパティの初期値は False とします。 やりたいことは、 ComboBox が「Any」でない場合(is または is not のいずれかの場合)にのみその右隣の TextBox の Enabled プロパティを True にしたいのです。 いま、ComboBox30 を Any から is に切り替えたとします。 すると、TextBox30.Enabled を False から True にしたいのです。 ここで、ComboBox30 を is から is not に切り替えたとします。 TextBox30.Enabled は True のままです。 ここで、ComboBox30 を is not から Any に切り替えたとします。 すると、TextBox30.Enabled を True から False にしたいのです。 ComboBox のイベントハンドラで Sub ComboBox30_Change ()  If ComboBox30.Value = "Any" Then   TextBox30.Enabled = "False"  Else   TextBox30.Enabled = "True"  End If End Sub のように書けばいいことは分かっているのですが、その場合は数字だけ変えたイベントハンドラを100個書かなければなりません。 このイベントハンドラを1個にすることはできるでしょうか。 (コンボボックス100個のうちどれかが変更されたら、変更されたコンボボックスの番号を知りながら呼び出されるハンドラ) 次善の策として、 Sub ComboBox30_Change ()  userSubroutine End Sub のように書くこともできるかと思いますが、この場合、どのコンボボックスが変更されたか(どのイベントハンドラが起動されたか)を知って、userSubroutine に渡さなければなりません。 よろしくお願いします!

  • オブジェクトのプロパティを一気に変更する方法

    テキストオブジェクトが一つあります。 文字のフォントやサイズ、表示色やバックグラウンドカラーなどをまとめて変更するステートメントがあったと思うのですが、忘れてしまいました。 textbox.text="1111" textbox.visible=true 等のステートメントを *******(忘れたステートメント) .tex="1111" .visible=true ****** と何かでくくって設定していたと思うのですが思い出せません。

  • visual basicのテキストボックスについて

    ビジュアルベーシックでカレンダーを作ろうと考えてます。 日付のところをテキストボックスに数字を入れて、カレンダーに見立てようとしています。 でも、そのテキストボックスに値を代入するとき、一つ一つに textbox1.text=1 textbox2.text=2・・・・ と書いていくのはすごくメンドくさく、非効率的です。 今、自分が考えている解決方法は、javascriptにでてくるdocument.forms[0].elements[a].valueのようなテキストボックスなどの名前を指定しなくても値を代入する方法です。 でも、ビジュアルベーシックにこのような操作が可能なのかわかりません。 知っている方がいたら是非教えてください。

  • エクセルVBAでユーザーフォームのテキストボックス

    ユーザーフォーム上にテキストボックスを8個設置しました。 そこに数値が入力された場合は自動的にカンマ区切りが表示されるように以下のコードを書きました。 これで希望の動きはしてくれるのですが、このやりかたは正しいでしょうか? また、テキストボックスは8個あるので、それぞれに下記のように8通りコードをかかなければいけないのでしょうか?ご教示ください。 Private Sub TextBox1_Change()   If IsNumeric(TextBox1.Value) Then Application.EnableEvents=False     TextBox1.Text = Format(TextBox1.Value, "#,##0") Application.EnableEvents=True   End If End Sub 途中(2~7)略 Private Sub TextBox8_Change()   If IsNumeric(TextBox8.Value) Then Application.EnableEvents=False     TextBox8.Text = Format(TextBox8.Value, "#,##0") Application.EnableEvents=True   End If 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

このQ&Aのポイント
  • MFC-L9570CDWを使っています。ネットワークスキャンをするため機械本体からスキャン送信先PCを指定したいのですが、目的のPCが見つかりません。
  • ブラザーのHPを見ると「インクジェット/レーザープリンター」(Windows)スキャンキーの設定をする方法が見つかりました。しかし、プリンターのプロパティーを開いてもスキャンキー設定タブが現れません。
  • Windows10 Pro ビルド1703を使用している場合、スキャンキーの設定が見つからない問題が発生しています。スキャンキーの設定方法を教えてください。
回答を見る

専門家に質問してみよう