【发布时间】:2021-02-01 07:00:38
【问题描述】:
目的:通过类模块将keydown事件分配给工作表(Sheet1)上的4个文本框
我有一个 Excel 工作表 (Sheet1),上面有 4 个文本框(默认名称 - TextBox1、TextBox2、TextBox3、TextBox4)。
采取的步骤:
(1) 使用以下代码创建了一个名为 ClsEventTxtBx 的类模块。
Public WithEvents CTxtBx As MSForms.TextBox
Private Sub CTxtBx_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then Debug.Print CTxtBx.Name
End Sub
(2) 在 Workbook Open 事件中添加以下代码。
Dim TxtBxArr() As New ClsEventTxtBx
Private Sub Workbook_Open()
Dim i As Integer, shp As Shape
For Each shp In Sheet1.Shapes
If shp.Type = msoOLEControlObject Then
If TypeName(shp.OLEFormat.Object.Object) = "TextBox" Then
i = i + 1
ReDim TxtBxArr(1 To i)
Set TxtBxArr(i).CTxtBx = shp.OLEFormat.Object.Object
End If
End If
Next shp
End Sub
你能找出代码有什么问题吗?
【问题讨论】:
-
如果要维护现有的数组内容,需要使用
Redim Preserve。