作者:绿色风
分类:
时间:2022-08-17
浏览:132
楼主 liuguansky |
Q:如何实现单元格区域,一共26个单元格,能够与窗体的TEXTBOX同步更新?
A;用如下代码: 类模块TT- Private WithEvents tBox As MSForms.TextBox
- '定义事件变量
- Public Sub gTb(k As MSForms.TextBox)
- '获取值
- Set tBox = k
- End Sub
- Private Sub tbox_Change()
- '事件
- Dim i As Byte, j As Byte, s
- Application.EnableEvents = False
- i = CInt(Replace(tBox.Name, "TextBox", ""))
- '取得文本框的位置
- With UserForm1.Controls("TextBox1")
- If i > 1 Then
- arrt(i - 1) = tBox.Text
- '对单元格赋值
- .Text = [c2].Value
- '同时修改合计数
- End If
- End With
- Application.EnableEvents = True
- End Sub
模块:- Public arr, arrt(1 To 25) As Range
- Sub 按钮1_Click()
- UserForm1.Show 0
- End Sub
窗体代码:- Private KK(1 To 26) As TT
- Private Sub UserForm_Initialize()
- Dim i As Byte, j As Byte, t As MSForms.TextBox
- Set arr = ActiveSheet.[b10:f14] '获取单元格区域对象
- For i = 1 To 5
- For j = 1 To 5
- Set arrt(i - 5 + j * 5) = arr(i, j)
- '赋值数组
- Next j, i
- For i = 1 To 26
- Set KK(i) = New TT '创建类实体
- Set t = Me.Controls("TextBox" & i)
- '获取TEXTBOX对象
- KK(i).gTb t
- '实体化
- If i = 1 Then
- t.Locked = True
- t.Text = [c2].Value '赋值
- Else: t.Text = arrt(i - 1).Value
- End If
- Next i
- End Sub
工作表事件:- Private Sub Worksheet_Change(ByVal Target As Range)
- Dim i As Byte
- If Not Application.Intersect(Target, [b10:f14]) Is Nothing Then
- '修改时相应修改TEXTBOX值,同时更改总和。
- i = Target.Row + Target.Column * 5 - 18
- UserForm1.Controls("TextBox" & i).Text = arrt(i - 1)
- End If
- End Sub
|
2楼 JOYARK1958 |
謝謝提供學習下載中 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一