首页 > 解决方案 > 使用变量定义控件在vba中的窗体上定义控件标题

问题描述

请让我重新开始。

我有一个用户表单,SortForm,上面有 30 个单选按钮。表单的目的是允许用户选择其中一个按钮用作对电子表格进行排序的键。它正在对课程进行排序,并且每个注册期都会发生变化。

我试图做的是更改单选按钮的标题以反映课程名称。我已将电子表格中的信息存储到两个数组中,strSortName 和 intSortCol。strSortName 包含课程名称。每个单选按钮名称以“btSort”开头,然后是数字 1 到 30。我想要做的是使用“btsort”的串联和我的 do 循环中的索引来更新按钮的标题以反映课程名称包含在 strSortName 中

我希望这是一个更好的问题

查理

迄今为止的代码,卡在更新字幕上

Sub macSortData() ' ' macSortData 宏 ' ' 键盘快捷键:Ctrl+Shift+S '

Dim strVal1 As String, intVal2 As Integer, I As Integer Dim FormName As String ' 不确定是否需要 Dim ControlName As Controls ' 不确定是否需要或正确 Dim intSortCol(34), strSortName(34) As String

表格(“主要”)。激活

对于 I = 1 到 34

''strVal1 包含课程名称,strVal2 包含课程的列号

strVal1 = Cells(4, I + 2).Value
intVal2 = I + 2

'测试结束类列表

 If Len(strVal1) = 0 Then GoTo sortFinal
 If strVal1 = "# taken" Then GoTo sortFinal

'将名称和列号存储在数组中
strSortName(I) = strVal1 intSortCol(I) = intVal2

'非工作字幕更新代码 Set ControlName = "btsort" & Trim(str(I)) ' 连接控件名称

SortForm.ControlName.Caption = strSortName(I) '非工作赋值尝试

接下来我

排序最终:

'显示表单SortForm.Show

结束子

标签: excelvba

解决方案


有效的代码是

ControlName = "btsort" & Trim(str(I))

SortForm.Controls(ControlName).Caption = Trim(strSortName(I))


推荐阅读