Excel具有此功能dec2bin(num,places)
,效果很好。但是当我在VBA中使用它时,我得到了结果,但是如果msb和后面的位为0,格式就会脱离。
我希望获得:
0001
代替1
0101
代替101
当我将其重定向到电子表格时,我会观察到:
Range("I2").Value = Mid(y, 2, 3)
如果我将它存储在变量中并尝试访问这些位,我就把它弄好了,但是如果我不能用上面提到的方式把它放在电子表格中就没用了。
有任何想法如何解决这个问题?
答案 0 :(得分: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
通过代码格式化单元格。
OR
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