Sub kk()        Dim B(0 To 15) As Byte
        For i = 0 To 15
            B(i) = "0"
        Next
        If CheckBox1.Checked = True Then B(0) = "1"
        If CheckBox2.Checked = True Then B(1) = "1" '新加进来的
        If CheckBox3.Checked = True Then B(2) = "1"
        If CheckBox4.Checked = True Then B(3) = "1"
        If CheckBox5.Checked = True Then B(4) = "1"
        If CheckBox6.Checked = True Then B(5) = "1"
        If CheckBox7.Checked = True Then B(6) = "1"
        If CheckBox8.Checked = True Then B(7) = "1"
        If CheckBox9.Checked = True Then B(8) = "1"
        If CheckBox10.Checked = True Then B(9) = "1"
        If CheckBox11.Checked = True Then B(10) = "1"
        If CheckBox12.Checked = True Then B(11) = "1"
        If CheckBox13.Checked = True Then B(12) = "1"
        If CheckBox14.Checked = True Then B(13) = "1"
        If CheckBox15.Checked = True Then B(14) = "1"
        If CheckBox16.Checked = True Then B(15) = "1"
        TextBox1.Text = ""
        A = 0
        C = 0
        D = 0
        For i = 0 To 7
            C = C + B(i)
        Next
        For i = 8 To 15
            D = D + B(i)
        Next
        For i = 2 To 11
            A = A + B(i)请教大家,我想把A 这个变量变成16进制,如何做

解决方案 »

  1.   

    hex(A)就可以了
      

  2.   

    你最后那儿,为什么是“2到11”呢?只用这中间的10Bit ?dim n as long 
    n=1
    for i = 2 to 11
       A = A + n * B(i)
       n = n+n
    next
    随手打的代码,不过应该是没有问题的。
      

  3.   

    msgbox hex(A)
      

  4.   

    既然要求A的十六进制,我猜B(i)应该是位值,A的计算方法有误(先在是统计出现1的个数)吧。
    '按位值计算'
    For i = 2 To 11
        A = A + B(i) * (2 ^ i)
    Next
    '显示十六进制'
    MsgBox "&H" & Hex(A)
      

  5.   

    我又要来吐槽控件数组了.要是有1000个checkbox, 楼主的代码肯定很妖艳.
      

  6.   

    其实你肯定没注意到:
    楼主的应用环境是VBA而不是VB6,在VBA环境下的窗口中,是没法使用控件数组的。
      

  7.   

    楼主是搞VBA的啊?
      

  8.   

    这两天正好用了下Excel,发现Excel的CheckBox没有“Checked”属性,
    标识“是否选择”的属性,跟VB6是一样的,依然是 Value属性。
    估计其它的VBA环境也会是一样的。
    看来楼主用的可能不是VBA窗体,而有可能是 VB.NET的…………那么,这下就可以用控件数组了。
      

  9.   

    问题已经解决。VB.net