从VBA表格插入checkbox值到Excel电子表格中

我正在尝试将选中的checkbox列表插入到电子表格中,在此用例中,用户最多可以select15个项目。 这将被插入到我在下面定义的某个单元格中。

我有一个checkbox,具有以下名称/值:

Name Value ========== ===== chk_week1 1 chk_week2 2 ... ... ... ... chk_week15 15 

例如,如果用户selectchk_week1,chk_week2,chk_week4和chk_week5,那么它应该作为1,2,4,5插入到单元格中。

我已经包含了一个图像如何更好地展示它:

在这里输入图像说明

每个checkbox都有上表中列出的名称和值。 这是我目前使用的代码:

 Private Sub btnSubmit_Click() Dim ws As Worksheet Dim rng1 As Range Set ws = Worksheets("main") ' Copy the data to the database ' Get last empty cell in column A Set rng1 = ws.Cells(Rows.Count, "a").End(xlUp) ' Having difficulty adding the code here ' rng1.Offset(1, 7) = weeks End Sub 

提前致谢。

这个函数会返回你想要放入单元格的string。

 Function CheckBoxValues() As String For x = 1 To 15 If Sheets("Main").Shapes("chk_week" & x).OLEFormat.Object.Object.Value Then CheckBoxValues = CheckBoxValues & x & "," End If Next if Len(CheckBoxValue <> 0) then CheckBoxValues = Left(CheckBoxValues, Len(CheckBoxValues) - 1) end if End Function 

或者对于非循环方法,请检查Francis Dean的解决scheme。

你可以使用一个函数来通过你的checkbox并按照你想要的格式返回一个string(添加其余的checkbox!)

 Private Sub btnSubmit_Click()

    昏暗的ws作为工作表
    昏暗rng1作为范围
    设置ws =工作表(“主”)

     '将数据复制到数据库
     '获取A列中的最后一个空单元格
    设置rng1 = ws.Cells(Rows.Count,“a”)。End(xlUp)

     '在这里添加代码很困难
     rng1.Offset(1,7)= GetWeeks

结束小组

私人函数GetWeeks()作为string

    作为string昏暗星期

     '如果条件为真,则将值添加到string中
    如果chk_week1.Value = True那么周=周和“1”
    如果chk_week2.Value = True那么周=周和“2”
    如果chk_week3.Value = True那么星期=星期和“2”
     ” ...
    如果chk_week14.Value = True那么周=周和“14”
    如果chk_week15.Value = True那么周=星期和“15”

     '删除尾部的逗号
    如果右(周,1)=“,”则周=左(周,伦(周) -  1)

     GetWeeks =星期

结束function