Excel2013の"設定"シート上にActiveコントロールのコンボボックスを配置しています。
それと併せて、ユーザーフォーム上にもコンボボックスを配置しています。
"設定"シート上のコンボボックスの値が"○"と"×"が設定されていたとすると、ユーザーフォームを呼び出した時に同じ設定で表示させたいと考えております。
一応実現できているのですが、10個くらいあるので、まとめた書き方ができないものか?と考えています。
現在書いているのを記載します。
For i = 1 To 10
With Me.Controls("ComboBox" & i)
.Clear
.AddItem "○"
.AddItem "×"
'本当はここで、If ThisWorkbook.Worksheets("設定").Controls("ComboBox" & i).Value = "○" Then・・・みたいに処理できればよいのですがエラーになる
End With
Next i
With ThisWorkbook.Worksheets("設定")
If .ComboBox1.Value = "○" Then
Me.ComboBox1.ListIndex = 0
Else
Me.ComboBox1.ListIndex = 1
End If
If .ComboBox2.Value = "○" Then
Me.ComboBox2.ListIndex = 0
Else
Me.ComboBox2.ListIndex = 1
End If
If .ComboBox3.Value = "○" Then
・
・
・このようなパターンで続いていく・・・
シート上にある複数のActiveコントロールのコンボボックスの指定を、ユーザーフォームのコンボボックスを指定するように、
If ThisWorkbook.Worksheets("設定").Controls("ComboBox" & i).Value
のように繰り返し変数で指定したいのですが、うまくいきません。
もし、他に書き方があるならばと思っています。
No.2ベストアンサー
- 回答日時:
こんな感じで。
Dim i As Integer
Dim ctl As Control
For i = 1 To 10
Set ctl = Me.Controls("Combobox" & i)
With ThisWorkbook.Worksheets("設定").OLEObjects(ctl.Name).Object
ctl.List = .List
ctl.Value = .Value
End With
Next
ありがとうございました。
何故か.Listだとi=4の所でエラーになってしまいました。特に3までと違いはないし、存在もしていたのですが・・・。
そこで、.ListIndexに変更すると取得できました。イミディエイトで見ても、.Listだと型が一致しないエラーになったのですが、.ListIndexに変更すると値が返ってきたので.ListIndexが正解なんでしょうかね。
そこを変更したら、思い通りになりました。
No.3
- 回答日時:
#1です。
>"シート上にActiveコントロールのコンボボックス
>それと併せて、ユーザーフォーム上にもコンボボックスを配置しています。
敢えて標準モジュールでのサンプルを示しましたが、理解に至っていないようですかね。
>シート上にある複数のActiveコントロールのコンボボックスの指定を
どのコントロールのインデックスを拾っているか確認したほうが良いかと思いますが
静観します。
No.1
- 回答日時:
こんにちは、
>シート上にActiveコントロールのコンボボックス
変数 i の型をStringに変えないといけないかと思います。
参考に成りますでしょうか?
標準モジュールで
Sub hoge()
Dim objOLE, i As Long
Dim CtrlName
i = 1
CtrlName = "ComboBox" & CStr(i)
Set objOLE = Worksheets("設定").OLEObjects(CtrlName)
MsgBox ("エラーではありません")
End Sub
iをループ変数で使用すればOKかと
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
エクセルVBAでオプションボタン...
-
EXCELでactivexコントロールを...
-
vb.netで画面のコントロールId...
-
'ckbl' コントロールは作成され...
-
C#で角が丸いテキストボックス
-
コントロールを移動できない
-
VBAのエラーについて、”実行時...
-
With~EndWithの省略部分と引数...
-
ExcelVBAでListViewが使用できない
-
間違えて配置してしまったコン...
-
Labelコントロールの(左右)余...
-
VBAのフォームでTextBoxがいっ...
-
変数をコントロール型で使用す...
-
(VBA)スピンボタンの大量...
-
コントロール配列と同じような...
-
DataGridViewとSPREADの機能比較
-
VBAでドラッグ・アンド・ドロップ
-
Groupboxの配下のコントロール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
エクセルVBAでオプションボタン...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
excelのリストボックスで選択し...
-
ユーザーフォームで動的(Me.Con...
-
フォーム上の現在アクティブな...
-
C#で自分のウインド・ハンド...
-
変数をコントロール型で使用す...
-
VBAのフォームでTextBoxがいっ...
-
コントロールを移動できない
-
Groupboxの配下のコントロール...
-
C#で角が丸いテキストボックス
-
(VBA)スピンボタンの大量...
-
間違えて配置してしまったコン...
-
エクセル コントロールツール...
-
'ckbl' コントロールは作成され...
-
OCXって何ですか?
おすすめ情報