Excel具有此功能dec2bin(num,places)
,效果很好。但是当我在 VBA 中使用它时,我得到了结果,但是如果 msb 和后续位为 0,格式就会脱离困境。
我希望获得:
0001
代替1
0101
代替101
当我将其重定向到电子表格时,我观察到这一点:
Range("I2").Value = Mid(y, 2, 3)
如果我将它存储在一个变量中并尝试访问我做对的位,但如果我不能以上述方式将它放入电子表格中,那就没有用了。
任何想法如何解决这个问题?
Excel具有此功能dec2bin(num,places)
,效果很好。但是当我在 VBA 中使用它时,我得到了结果,但是如果 msb 和后续位为 0,格式就会脱离困境。
我希望获得:
0001
代替1
0101
代替101
当我将其重定向到电子表格时,我观察到这一点:
Range("I2").Value = Mid(y, 2, 3)
如果我将它存储在一个变量中并尝试访问我做对的位,但如果我不能以上述方式将它放入电子表格中,那就没有用了。
任何想法如何解决这个问题?
尝试
Sub Sample()
Dim sVal As String
sVal = Application.Evaluate("=DEC2BIN(7, 4)")
Debug.Print sVal
End Sub
或者,如果您不想硬编码,请Places
使用它
Sub Sample()
Dim sVal As String
Dim nPlace as Long
nPlace = 4
sVal = Application.Evaluate("=DEC2BIN(7," & nPlace & ")")
Debug.Print sVal
End Sub
这会给你0111
而不是111
编辑
如果要将其输出到 Excel 单元格,那么您有两个选择
A)将单元格格式化为文本,然后使用
Sub Sample()
Dim sVal As String
Dim nPlace As Long
'~~> Number of places
nPlace = 4
sVal = Application.Evaluate("=DEC2BIN(7," & nPlace & ")")
ThisWorkbook.Sheets("Sheet1").Range("A1").Value = sVal
End Sub
或者,您可以使用.Numberformat
通过代码格式化单元格。
或者
B)'
在 Excel 中输入数据之前使用
Sub Sample()
Dim sVal As String
Dim nPlace As Long
'~~> Number of places
nPlace = 4
sVal = Application.Evaluate("=DEC2BIN(7," & nPlace & ")")
ThisWorkbook.Sheets("Sheet1").Range("A2").Value = "'" & sVal
End Sub