excel - Excel VBA - 链接标签和复选框
问题描述
我有以下用户表单:
使用下面的代码,我可以将每个选定复选框的名称保存到工作表中。该值将保存在同一列中,但在不同的行上(当然),因为可以选择多个复选框。
Dim indProdWs As Worksheet
Dim ctl As Control
Dim i As Long
Set indProdWs = tWb.Worksheets("INDICATION-PRODUCT")
i = 4
' This is the row where i want to save the first value
For Each ctl In seg_multipage.Pages(1).Controls
If TypeName(ctl) = "CheckBox" Then
If ctl.Value = True Then
indProdWs.Cells(i, 9) = ctl.Caption: i = i + 1
End If
End If
Next ctl
但是,正如您在第一张图片中看到的那样,每行产品都有一个标签。
这就是我想要完成的:
如果选择了第二行中的 Product 22,那么我希望将名称保存在具有以下格式的单元格上:
标签 2 - 产品 22
或者,如果选择了第二行中的产品 51:
标签 5 - 产品 51
如您所见,标签编号始终与产品的第一位数字匹配。我尝试使用它作为变量,但我没有成功。
谢谢你能给我的任何帮助!
解决方案
这个名字实际上是“Product22”还是只是一个例子?– Siddharth Rout 6 分钟前
@SiddharthRout 只是一个示例,但格式相似。实际名称是 seg_cb_selInd_22(例如)。– soraia635 1 分钟前
这是你正在尝试的吗?
将代码更改For - Next
为以下
For Each ctl In seg_multipage.Pages(1).Controls
If TypeName(ctl) = "CheckBox" Then
If ctl.Value = True Then
indProdWs.Cells(i, 9) = Controls("seg_l_selInd_" & _
GetNumber(ctl.Name)).Caption & _
" - " & _
ctl.Name
i = i + 1
End If
End If
Next ctl
然后将此函数添加到您的代码中
Private Function GetNumber(s As String)
Dim numb As Long
Dim i As Long
For i = 1 To Len(s)
Select Case Mid(s, i, 1)
Case 0 To 9
numb = Mid(s, i, 1)
Exit For
End Select
Next
GetNumber = numb
End Function
注意:此函数假定您将向其传递一个字母数字字符串。
推荐阅读
- types - 使用宏函数的 SAS 类型问题
- kotlin-native - Kotlin-Native CompileKotlinIos 任务失败,因为当我更改 Objective-C 代码时 Cinterop 任务无法更新
- compiler-construction - 如何在词法分析器 FLEX 中将多个输出文件名作为命令行参数?
- asp.net-mvc - Request.Cookie - Cookie 未发送或未排除
- vue.js - 如何在 quill 编辑器中使用 v-model
- r - 如何通过点类型区分 geom_point 图中的组
- ruby-on-rails - LoadError: cannot load such file -- zip/zip when running any rails command after upgrade
- node.js - 节点示例不起作用(命令失败:/usr/local/bin/docker run -d)
- azure - Azure AD:将用户分配给应用程序时发送欢迎电子邮件
- python - 仅出现一次对象数据