經上次發帖求助,自動創建了ComboBox控制元件
Set mcolCombos1 = New Collection
For i = 1 To 5
Dim ctlCombo1 As ComboBox
Set ctlCombo1 = Frame1.Controls.Add("Forms.combobox.1", "modular subbce" & i, True)
With ctlCombo1
.Left = 200
.Top = 30 + (i - 1) * 50 + 6
.Width = 120
.Height = 20
.AddItem "M 5/2 Monostable"
.AddItem "B 5/2 Bistable"
End With
Dim objMyCombo1 As MyCombo
Set objMyCombo1 = New MyCombo
Set objMyCombo1.mctlCombo = ctlCombo1
objMyCombo1.mlngIndex = i
mcolCombos1.Add objMyCombo1
Next i
此外自己創建了幾個TextBox控制元件
Dim oTX As Control
Dim i As Integer
With UserForm1
For i = 1 To 5
Set oTX = Frame1.Controls.Add("Forms.textbox.1", "Txt" & i, True)
With oTX
.Left = 100
.Top = 30 + (i - 1) * 50 + 6
.Width = 80
.Height = 20
End With
Next i
End With
目的是用戶自行選擇表單動態生成的ComboBox中的Additem值,選擇完分別將值的代碼部分顯示在TextBox中,將解釋保留在ComboBox中。如若選擇"M 5/2 Monostable"則TextBox中顯示為“M”,ComboBox中顯示為“5/2 Monostable”。
由于水平有限,現有以下幾個問題:
1.若為表單控制元件很容易將兩者區分,用表單控制元件的change()事件就可解決,但若為動態添加的控制元件無法進行操作。
2.曾嘗試在類模塊中加以處理,代碼如下:
Option Explicit
Public WithEvents mctlCombo As ComboBox
Public mlngIndex As Long
Public mcolCombosVal1 As String
Public mcolCombosVal1x As String
Private Sub mctlCombo_Change()
MsgBox mcolCombosVal1
mcolCombosVal1x = mcolCombos(1).mctlCombo.Value
mcolCombosVal1 = Mid(mcolCombosVal1x, 1, 1)
UserForm1.Controls("Txt1").Text = mcolCombosVal1
mcolCombos(1).mctlCombo.Value = Mid(mcolCombosVal1x, 4)
End Sub
運行時提示錯誤“物件變數或with變數塊未設定”
不知是為何錯誤?請指導,水平有限敬請諒解,謝謝!
uj5u.com熱心網友回復:
https://download.csdn.net/download/bakw/9619630 我原來發過一個例子,參考一下.uj5u.com熱心網友回復:
試試這樣:
Option Explicit
Public WithEvents mctlCombo As ComboBox
Public mlngIndex As Long
Public mstrCombosVal1 As String
Public mstrCombosVal1x As String
Private Sub mctlCombo_Change()
MsgBox mstrCombosVal1
mstrCombosVal1x = mctlCombo.Text
mstrCombosVal1 = Mid(mstrCombosVal1x, 1, 1)
UserForm1.Controls("Txt1").Text = mstrCombosVal1
mctlCombo.Text = Mid(mstrCombosVal1x, 4)
End Sub
uj5u.com熱心網友回復:
如果只處理第一個combobox控制元件的話,可以這樣:
Option Explicit
Public WithEvents mctlCombo As ComboBox
Public mlngIndex As Long
Public mstrCombosVal1 As String
Public mstrCombosVal1x As String
Private Sub mctlCombo_Change()
if mlngIndex <> 1 Then
Exit Sub
End If
MsgBox mstrCombosVal1
mstrCombosVal1x = mctlCombo.Text
mstrCombosVal1 = Mid(mstrCombosVal1x, 1, 1)
UserForm1.Controls("Txt1").Text = mstrCombosVal1
mctlCombo.Text = Mid(mstrCombosVal1x, 4)
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/26874.html
標籤:VBA
上一篇:VB現在在實際專案中還用的多嗎?
