如下 0x86800000值发生变化时,它下面的单元格相应发生变化
0x86800000 | |
1 | 0 |
0 | 1 |
0 | 2 |
0 | 3 |
0 | 4 |
1 | 5 |
1 | 6 |
0 | 7 |
1 | 8 |
0 | 9 |
0 | 10 |
0 | 11 |
0 | 12 |
0 | 13 |
0 | 14 |
0 | 15 |
0 | 16 |
0 | 17 |
0 | 18 |
0 | 19 |
0 | 20 |
0 | 21 |
0 | 22 |
0 | 23 |
0 | 24 |
0 | 25 |
0 | 26 |
0 | 27 |
0 | 28 |
0 | 29 |
0 | 30 |
0 | 31 |
0x86800000 | |
1 | 0 |
0 | 1 |
0 | 2 |
0 | 3 |
0 | 4 |
1 | 5 |
1 | 6 |
0 | 7 |
1 | 8 |
0 | 9 |
0 | 10 |
0 | 11 |
0 | 12 |
0 | 13 |
0 | 14 |
0 | 15 |
0 | 16 |
0 | 17 |
0 | 18 |
0 | 19 |
0 | 20 |
0 | 21 |
0 | 22 |
0 | 23 |
0 | 24 |
0 | 25 |
0 | 26 |
0 | 27 |
0 | 28 |
0 | 29 |
0 | 30 |
0 | 31 |
Private Sub Worksheet_Change(ByVal Target As Range)
With TargetIf .Column = 9 And .Offset(0, -1) = "" Then
Select Case Target
Case Is = ""
Case Else
Dim a1 As String
Dim a2 As Integer
Dim i As Integer
i = 0
a1 = Target.Text
.Offset(1, 0) = BIT_VALUE(Target.Text, .Offset(1, 1))
.Offset(2, 0) = BIT_VALUE(Target.Text, .Offset(2, 1))
.Offset(3, 0) = BIT_VALUE(Target.Text, .Offset(3, 1))
.Offset(4, 0) = BIT_VALUE(Target.Text, .Offset(4, 1))
.Offset(5, 0) = BIT_VALUE(Target.Text, .Offset(5, 1))
.Offset(6, 0) = BIT_VALUE(Target.Text, .Offset(6, 1))
.Offset(7, 0) = BIT_VALUE(Target.Text, .Offset(7, 1))
.Offset(8, 0) = BIT_VALUE(Target.Text, .Offset(8, 1))
.Offset(9, 0) = BIT_VALUE(Target.Text, .Offset(9, 1))
.Offset(10, 0) = BIT_VALUE(Target.Text, .Offset(10, 1))
.Offset(11, 0) = BIT_VALUE(Target.Text, .Offset(11, 1))
.Offset(12, 0) = BIT_VALUE(Target.Text, .Offset(12, 1))
.Offset(13, 0) = BIT_VALUE(Target.Text, .Offset(13, 1))
.Offset(14, 0) = BIT_VALUE(Target.Text, .Offset(14, 1))
.Offset(15, 0) = BIT_VALUE(Target.Text, .Offset(15, 1))
.Offset(16, 0) = BIT_VALUE(Target.Text, .Offset(16, 1))
.Offset(17, 0) = BIT_VALUE(Target.Text, .Offset(17, 1))
.Offset(18, 0) = BIT_VALUE(Target.Text, .Offset(18, 1))
.Offset(19, 0) = BIT_VALUE(Target.Text, .Offset(19, 1))
.Offset(20, 0) = BIT_VALUE(Target.Text, .Offset(20, 1))
.Offset(21, 0) = BIT_VALUE(Target.Text, .Offset(21, 1))
.Offset(22, 0) = BIT_VALUE(Target.Text, .Offset(22, 1))
.Offset(23, 0) = BIT_VALUE(Target.Text, .Offset(23, 1))
.Offset(24, 0) = BIT_VALUE(Target.Text, .Offset(24, 1))
.Offset(25, 0) = BIT_VALUE(Target.Text, .Offset(25, 1))
.Offset(26, 0) = BIT_VALUE(Target.Text, .Offset(26, 1))
.Offset(27, 0) = BIT_VALUE(Target.Text, .Offset(27, 1))
.Offset(28, 0) = BIT_VALUE(Target.Text, .Offset(28, 1))
.Offset(29, 0) = BIT_VALUE(Target.Text, .Offset(29, 1))
.Offset(30, 0) = BIT_VALUE(Target.Text, .Offset(30, 1))
.Offset(31, 0) = BIT_VALUE(Target.Text, .Offset(31, 1))
.Offset(32, 0) = BIT_VALUE(Target.Text, .Offset(32, 1))
End Select
End If
End With
End Sub
Function BIT_VALUE(ByVal num As String, ByVal bit As Integer) As Long
bit = 31 - bit
Dim d1 As Double
Dim d2 As Double
Dim d3 As Double
Dim d4 As Double
Dim n1 As String
Dim n2 As String
Dim n3 As String
Dim n4 As String
d1 = 0
d2 = 0
d3 = 0
d4 = 0
Dim bIsHex As Boolean
bIsHex = True
If InStr(num, "0x") > 0 Then
num = Replace(num, "0x", "")
ElseIf InStr(num, "0X") > 0 Then
num = Replace(num, "0X", "")
Else
bIsHex = False
End If
While Len(num) < 8
num = "0" & num
Wend
n1 = Mid(num, 1, 2)
n2 = Mid(num, 3, 2)
n3 = Mid(num, 5, 2)
n4 = Mid(num, 7, 2)
If bIsHex Then
n1 = "&H" & n1
n2 = "&H" & n2
n3 = "&H" & n3
n4 = "&H" & n4
End If
d1 = Val(n1)
d2 = Val(n2)
d3 = Val(n3)
d4 = Val(n4)
If bit < 8 Then
If d4 And 2 ^ bit Then
BIT_VALUE = 1
Else
BIT_VALUE = 0
End If
ElseIf bit < 16 Then
If d3 And 2 ^ (bit - 8) Then
BIT_VALUE = 1
Else
BIT_VALUE = 0
End If
ElseIf bit < 24 Then
If d2 And 2 ^ (bit - 16) Then
BIT_VALUE = 1
Else
BIT_VALUE = 0
End If
Else
If d1 And 2 ^ (bit - 24) Then
BIT_VALUE = 1
Else
BIT_VALUE = 0
End If
End If
End Function