- ベストアンサー
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
CheckBoxが CheckBox1,CheckBox2,…6 まであり、 If CheckBox1.Value = True Then… とするときに、数字「1」の部分を変数にしたいのですが、どのようにすれば可能でしょうか。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
関連するQ&A
- エクセル VBA CheckBox名に変数を使用
エクセル VBA CheckBoxのオブジェクト名に変数を使用して 値を取得したいのですが・・・ If ActiveSheet.OLEObjects(TempName).Object.Value = True Then (処理) Else (処理) End If 「実行時エラー '1004': OLEObject クラスのオブジェクトのプロパティを取得できません。」 というエラーがでてしまいます。 何が原因なのかわかる方是非ご教授ねがいます。
- 締切済み
- オフィス系ソフト
- VBAでオブジェクト名を変数にしたい。
教えてください。 EXCELでオブジェクト名CheckBox1の1を変数で変化させたいのですがどのように記述すれば良いのでしょうか。 例 CheckBox1.Value = True のCheckBox1の1の所です。 宜しくお願いします。
- 締切済み
- Visual Basic
- エクセルVBA 最終行にデータを追加する
エクセルのユーザーフォームにチェックリストを用意しました CheckBox1~CheckBox5まであり、 CheckBox1をクリック(true)にすると、セルに“あ” CheckBox2をクリック(true)にすると、セルに“い” CheckBox3をクリック(true)にすると、セルに“う” CheckBox4をクリック(true)にすると、セルに“え” CheckBox5をクリック(true)にすると、セルに“お” を反映させようと思っています たとえば、 ・CheckBox1のみクリック(true)で、A1に“あ” ・CheckBox2のみクリック(true)で、A1に“い” ・CheckBox1、CheckBox3をクリック(true)で、A1に“あ”、A2に“う” ・CheckBox2~CheckBox5をクリック(true)で、A1に“い“、A2に“う“、A3に”え”、A4に“お” といった感じで、選んだチェック項目について、A列においてA1から次々とデータを入力しようとしています そこで、 sheets1.Range("A:A").Clear If CheckBox1.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "あ" End If If CheckBox2.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "い" End If If CheckBox3.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "う" End If If CheckBox4.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "え" End If If CheckBox5.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "お" End If としました (実際は、CheckBoxの名前が1~5と数字ではないので、forは使いませんでした) すると、 CheckBox1~CheckBox5を全てクリック(true)しても、A1に“お”が反映されるだけで“あ”~”え”が入力されません どうすれば、思い通りになるのでしょうか 初歩的な質問だと思うのですが、よろしくお願いします
- 締切済み
- Excel(エクセル)
- Excel VBA CheckBoxの漏れ防止
CheckBoxのチェック漏れ防止方法で現在以下のコードで実行しています。 CheckBox1~7つあり、1つも選択していない場合は、メッセージを出す仕組みです。 Private Sub CommandButton1_Click() If CheckBox1 = True Or CheckBox2 = True Or CheckBox3 = True Or CheckBox4 = True Or _ CheckBox5 = True Or CheckBox6 = True Or CheckBox7 = True Then MsgBox "OK" Else MsgBox "必ず一つ以上選択してください。" End If End Sub 今は、CheckBoxが7つだけなのですが、今後20個ぐらいに増える予定です。 For~Nextで試してみたのですが、メッセージがチェックした分だけ表示を繰り返してしまいました。 今まで通り、Orでつなげても良いのすが、もう少しコードをコンパクトにする方法を探しているのですが、なかなか見つかりません。 ご教授をお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- Excel VBAでCheckboxの名前を変数にとって値を調べたい
Excel VBAでCheckboxの名前を変数にとって値を調べたいのです. シートにCheckboxがたくさん貼ってあり名前とOn,Offを調べたいのですが下記では名前は調べられてもOn,Offが確認できないのですが On,Offを別変数にとる場合タイプはなににすればいいでしょうか。 たとえば dim i as integer dim checkname() dim checvalue() as ???? i=0 for i=1 to 2 If Mid(ActiveSheet.Shapes(i).Name, 1, 5) = "Check" Then i=i+1 redim preserve checkname(i) checkname(i)=ActiveSheet.Shapes(i).Name redim preserve checvalue(i) checvalue(i)=ActiveSheet.Shapes(i).value <---これではエラー end if next i
- ベストアンサー
- Visual Basic
- エクセルVBA オブジェクト名の変わりになる変数
質問しつれいします。 エクセルVBAでマクロを作っているのですが、 分からないところがあるのでご指導の程お願いしたいです。 テキストボックスを複数つくり、それに順に値を 当てはめていくのですが、それを一つのループでしたいと 考えています。 例えば、text1というオブジェクト名のテキストボックスに text1.value = ○○ という風に、text20まで数字の部分だけ変えてループ関数で値を当てはめていきたいのですが、どうすればいいか分かりません。 変数に"text"という文字列と数字部分を結合したものをあてはめて 数字部分だけループ時に加算していき、 変数.value = ○○ という形で実現したいと思い色々試してみましたが、エラーが出てうまくできません。 わかる方がいらっしゃいましたら是非お教え願えませんでしょうか。 お願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセル VBA for文について
再び失礼します。 昨日VBAを始めた初心者です。 1、チェックボタン17個にそれぞれ変数を設定 2、2つだけチェックを入れると仮定して、実行ボタンを押したときに チェックが入っている2つの中で変数の大きいものをMax、小さいものをMinとしてシートに出力したいのですが、”ここ”と書いてあるところに Me("hensuu" & n). hensuu & n など入れてみたのですがエラーになります。 くだらないミスだと思いますがよくわかりません。 どなたかご教授お願いします。 Private Sub CommandButton2_Click() If Check1.Value = True Then hensuu1 = "9" End If If Check2.Value = True Then hensuu2 = "8" End If If Check3.Value = True Then hensuu3 = "7" End If If Check4.Value = True Then hensuu4 = "6" End If If Check5.Value = True Then hensuu5 = "5" End If If Check6.Value = True Then hensuu6 = "4" End If If Check7.Value = True Then hensuu7 = "3" End If If Check8.Value = True Then hensuu8 = "2" End If If Check9.Value = True Then hensuu9 = "1" End If If Check11.Value = True Then hensuu10 = "1/2" End If If Check11.Value = True Then hensuu11 = "1/3" End If If Check12.Value = True Then hensuu12 = "1/4" End If If Check13.Value = True Then hensuu13 = "1/5" End If If Check14.Value = True Then hensuu14 = "1/6" End If If Check15.Value = True Then hensuu15 = "1/7" End If If Check16.Value = True Then hensuu16 = "1/8" End If If Check14.Value = True Then hensuu17 = "1/9" End If Dim n As Long Dim Max As Long Dim Min As Long For n = 1 To 17 If Me("Check" & n).Value = True Then Max = ”ここ” If Me("Check" & n).Value = True Then Exit For Next n For n = Max To 17 If Me("Check" & n).Value = True Then Min = ”ここ” If Me("Check" & n).Value = True Then Exit For Next n Worksheets("Sheet1").Range("A1") = Min Worksheets("Sheet1").Range("B1") = Max MsgBox hensuu End Sub
- 締切済み
- オフィス系ソフト
- excelのVBAについてです。
ユーザーフォームの中に10個以上のオプションボタンがあります。どのボタンが選択されているかを判定するのに if optionbutton1.value=true then ... else ... if optionbutton2.value=true then ... else ... ... ... のように、すべてのボタンに対してif then ステートメント記述しています。 この部分をもう少し簡単にできないかなというのが今回の質問です。教えてください。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセル VBA チェックボックスについて
よろしくお願い致します。 OS:XP エクセル2003 VBAのことは、まったくの初心者です。 質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。 ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。 Private Sub CheckBox7_Click() If CheckBox7.Value = True Then CheckBox8.Enabled = True CheckBox9.Enabled = True CheckBox10.Enabled = True CheckBox11.Enabled = True Else CheckBox8.Value = False CheckBox9.Value = False CheckBox10.Value = False CheckBox11.Value = False CheckBox8.Enabled = False CheckBox9.Enabled = False CheckBox10.Enabled = False CheckBox11.Enabled = False End If End Sub
- 締切済み
- オフィス系ソフト
- CheckBoxがTrueの場合に表示をさせるには?
VB2008を使用しています。 3つのCheckBox1~3とそれに対応した3つのTextBox1~3を準備し、 Buttonを押すとCheckBoxがTrueのものだけをRichTextBox1に表示 させたくて下記のプログラムを作成しました。 しかしCheckBox1とCheckBox3については上手く作動するのですが CheckBox2について不具合が発生します。 (不具合) CheckBox1=TrueでButtonを押すとRichTextBox1にTextBox1を表示。 その後、CheckBox3=TrueでButtonを押すとRichTextBox1にTextBox1. TextBox3と表示。 ここまでは良いのですが、 CheckBox2=TrueでButtonを押すとRichTextBox1にTextBox2を表示。 その後、CheckBox3=TrueでButtonを押すとRichTextBox1にTextBox2. TextBox2.TextBox3と表示されてしまいTextBox2の内容が重複して しまいまいます。 何か良い解決策がありましたら教えて下さい。 よろしくお願いいたします。 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Me.CheckBox1.Checked = True Then RichTextBox1.Text = TextBox1.Text End If If Me.CheckBox2.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "." End If RichTextBox1.Text = RichTextBox1.Text & TextBox2.Text End If If Me.CheckBox3.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "." End If RichTextBox1.Text = RichTextBox1.Text & TextBox3.Text End If End Sub
- ベストアンサー
- Visual Basic
お礼
やりたいことができるようになりました。 >' シートモジュールでの Me はワークシート自信を指す このヒントのおかげで、標準モジュールに移動したときも動作させることができました。 非常に助かりました。 ありがとうございました。