一枚のシートに動的に複数のコンボボックスとコマンドボタンを生成しようとしています。
標準モジュールのループでコントロールを生成していますが、一周は上手く回るのですが、2週目から
コンボボックス作成MakeComboの中のここでおちると記載している部分でエクセルのアプリケーションエラーに
なってしまい、エクセルが落ちてしまいます。
With clsExcel.objWs
'コンボボックスの位置を指定
Dim cmbPos As Range
Set cmbPos = .Range(.Cells(k, 4), .Cells(k, 4))
'コンボボックスを作成
Set m_objOLE_C = .OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False,DisplayAsIcon:=False, _
Left:=cmbPos.Left, Top:=cmbPos.Top, Width:=63, Height:=15)
End With
Dim objCmb As ComboBox
Set objCmb = clsExcel.objWs.OLEObjects(m_objOLE_C.name).Object
objCmb.Locked = False
With objCmb
'--コンボボックスに初期値をセット
.AddItem "計", 0
.AddItem "推", 1
.AddItem "確", 2
.AddItem "積", 3
'--------------------------------------------
' For j = 0 To 3
' If strData = .List(j) Then
' .ListIndex = j'<-----ここでおちる
' Exit For
' End If
' Next j
'--------------------------------------------
End With
Set cmbPos = Nothing
Set objCmb = Nothing
Set m_objOLE_C = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
先頭部分を省いていますが、全体でないと調べにくいでぇ~す。
たぶん、これでいいと思いますが・・・・
Set objWs = clsExcel.ActiveSheet にした方がいいかと思います。
変数 k と strData は、何処で設定しているか解らないので取り敢えず
仮に k = 1 , strData = "積" としてテストしています。
Sub tariran()
Dim clsExcel As Workbook
Dim objWs As Worksheet
Dim cmbPos As Range
Dim m_objOLE_C As Object
Dim objcmb As Object
Dim strData As String
Dim j As Integer
Dim k As Integer
Set clsExcel = ThisWorkbook
Set objWs = clsExcel.ActiveSheet
With objWs
'コンボボックスの位置を指定
k = 1 '<---------------------------仮設定
Set cmbPos = .Range(.Cells(k, 4), .Cells(k, 4))
'コンボボックスを作成
Set m_objOLE_C = .OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
Link:=False, DisplayAsIcon:=False, Left:=cmbPos.Left, _
Top:=cmbPos.Top, Width:=63, Height:=15)
End With
Set objcmb = objWs.OLEObjects(m_objOLE_C.Name).Object
objcmb.Locked = False
With objcmb
'--コンボボックスに初期値をセット
.AddItem "計", 0
.AddItem "推", 1
.AddItem "確", 2
.AddItem "積", 3
strData = "積" ' <---------------仮設定
For j = 0 To 3
If strData = .List(j) Then
.ListIndex = j '<-----ここでおちる
Exit For
End If
Next j
End With
Set clsExcel = Nothing
Set objWs = Nothing
Set cmbPos = Nothing
Set objcmb = Nothing
Set m_objOLE_C = Nothing
End Sub
ありがとうございます。
コード全部は文字数がオーバーして記述できませんでした。すみません。。
参考にさせていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
周の長さは同じなのに面積が違...
-
1から9までの番号をつけた9枚の...
-
0.1は10パーセントなら1.0は何...
-
大学の代数学の課題で困ってい...
-
(1) x6条-64 因数分解したいん...
-
転置行列 証明
-
2数の積の最小、最大の数を出す...
-
エナメル線の電流容量 教えて...
-
数列1.2.3.....nにおいて、n≧2...
-
自然数Nをいくつかの自然数に分...
-
"和と差の積"や"三角関数の和と...
-
数学Aです。大中小3個のさいこ...
-
数学I 下図の平行四辺形ABCDはA...
-
素数の調べ方
-
高1です!次の問題を分かりやす...
-
上三角行列同士をかけたときの...
-
デルタ関数について
-
積数計算になると思うのですが...
-
高校数学です。0は全ての整数...
-
MMULT関数がわかりません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1から9までの番号をつけた9枚の...
-
0.1は10パーセントなら1.0は何...
-
周の長さは同じなのに面積が違...
-
大小2つのサイコロを投げる時...
-
高校数学です。0は全ての整数...
-
大,中,小3個のさいころを投げ...
-
測量図で、周囲の長さを算出す...
-
数学Aです。大中小3個のさいこ...
-
エナメル線の電流容量 教えて...
-
小学6年生算数の比の文章問題...
-
最小公倍数と最大公約数の違い...
-
数学の問題です 正の約数が28個...
-
「和と積がともに3である2数」...
-
数学A
-
ダムのような形の体積の求め方...
-
確率の問題です。 1個のサイコ...
-
40秒は何分?の計算式を教え...
-
高1です!次の問題を分かりやす...
-
積数計算になると思うのですが...
-
群論、「部分集合の元による語(...
おすすめ情報