从数组生成VBA十六进制值

时间:2012-07-08 01:06:53

标签: vba excel-vba excel

我的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

我收到了一个错误:

  

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

1 个答案:

答案 0 :(得分:1)

您的功能存在许多问题

  • CheckBox不是数组。它们不能被引用为ChecklBox(i)
  • 放置的第一个复选框将命名为CheckBox1而不是CheckBox0
  • 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是最不重要的位