1

チェックリストの有効化に基づいて、Excelシートにいくつかのチェックリストボックス(AF、つまりチェックボックスのキャプションなど)があり、16進値を生成する必要があります...以下のコードで実行できますか。

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)
  • 配置された最初のチェックボックスはCheckBox1notという名前になりますCheckBox0
  • このHex関数は、配列ではなく 10 進数、または 2 進数を変換します。

これらの問題に対処するためにあなたの関数が作り直されました

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 に答える