2013-10-12 19 views
1

Excel具有此功能dec2bin(num,places)这很好。但是,当我在VBA中使用它,我得到的结果,但格式下车钩,如果MSB和下位为0当通过VBA调用时,dec2bin不按预期工作

我希望获得:中

0001代替1

0101代替的101

这是我看到的时候我把它重定向到电子表格:

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

如果我将它存储在一个变量中,并尝试访问这些数据,那么我认为它是正确的,但如果我不能以上述方式将它放在电子表格中,那就没用了。

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

+1

你现在正在做输入数据之前(显示 – SheetJS

回答

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 
+0

+1以及覆盖调用DEC2BIN的代码)。 – brettdj