1

我的 excel 表中有一些清单框(比如 AF 即复选框的标题),基于启用检查列表,我必须生成十六进制值......下面的代码是否会做到这一点。

Private Sub CommandButton1_Click()

Dim SegArray(15) As Integer

 For i = 0 To 13

     If CheckBox(i).Value = True Then
         SegArray(i) = 1
     Else
         SegArray(i) = 0
     End If

 Next i

 hex_value = Hex(SegArray())

 MsgBox "0x" & hex_value

End Sub

我有一个错误:

编译错误:未定义子或函数

4

1 回答 1

1

您的功能存在许多问题

  • CheckBox不是数组。它们不能被引用为ChecklBox(i)
  • 放置的第一个复选框将被命名为CheckBox1notCheckBox0
  • Hex函数转换十进制数,而不是数组或二进制数

继承人您的功能已重新设计以解决这些问题

Private Sub CommandButton1_Click()
    Const num_of_checkboxes = 14

    Dim SegArray() As Long
    Dim i As Long
    Dim dec_value As Long
    Dim hex_value As String

    ReDim SegArray(1 To num_of_checkboxes)
    dec_value = 0

    For i = 1 To num_of_checkboxes
        If Me.OLEObjects("CheckBox" & i).Object.Value Then
            dec_value = dec_value + 2 ^ (i - 1)
        End If
    Next i
    hex_value = Hex(dec_value)
    MsgBox "0x" & hex_value
End Sub

假设 CheckBox1 是最低有效位

于 2012-07-08T02:16:05.833 回答