1

Excel具有此功能dec2bin(num,places),效果很好。但是当我在 VBA 中使用它时,我得到了结果,但是如果 msb 和后续位为 0,格式就会脱离困境。

我希望获得:

0001代替1

0101代替101

当我将其重定向到电子表格时,我观察到这一点:

Range("I2").Value = Mid(y, 2, 3)

如果我将它存储在一个变量中并尝试访问我做对的位,但如果我不能以上述方式将它放入电子表格中,那就没有用了。

任何想法如何解决这个问题?

4

1 回答 1

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
于 2013-10-12T19:08:34.450 回答