Excel visual basic 1004 error, method 'value&#

2019-08-05 04:49发布

I made a little add-in for excel. But for some reason it fails. After a fresh startup of excel it works fine, however when I copy paste text into excel and try to run it, it gives me the error: run-time '1004' , method 'Value' of object 'range' failed.

What I'm trying to do, is quit simple. I like building formula's like : (B5+B6)/2 without the use of an '=' in front so Excel doesn't calculate these expressions. I end up with one big column, and after I am finished I would like to select the first cell of the column with calculations, activate my add-in and he puts an '=' in front and loops downward untill an empty cell. This way each cell in my column is now calculated.

I am lost, can you help me ?

Sub makeFormula()
Do
ActiveCell.Value = "=" & ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop While ActiveCell.Value <> Empty
end Sub

3条回答
狗以群分
2楼-- · 2019-08-05 05:13
Sub makeFormula()
Dim c as range
Set c = selection.cells(1) 'in case >1 cell is selected
do while len(c.value) > 0
    'need to put quotes around the value if not a number
    'c.Formula = "=""" & c.Value & """"
    'use this if the value is a valid formula without =
    c.Formula = "=" & c.Value 
    Set c=c.Offset(1, 0)
Loop
End Sub
查看更多
Emotional °昔
3楼-- · 2019-08-05 05:21

I've found the solution, with debugging I found out that commas are the problem, So I change the comma to a dot, and then calculate. And now it works like a charm.

Sub makeFormula()
Dim Temp As String
Do
    Temp = ActiveCell.Value2
    Temp = Replace(Temp, ",", ".", 1)
    ActiveCell.Formula = "=" & Temp
    ActiveCell.Offset(1, 0).Select
Loop While ActiveCell.Value2 <> Empty
End Sub

Thanks for all your suggestions.

查看更多
干净又极端
4楼-- · 2019-08-05 05:22

You need to pass your value to temporary string variable. Worked for me:

Sub makeFormula()
    Dim Temp As String
    Do
        Temp = ActiveCell.Value2
        ActiveCell.Formula = "=" & Temp
        ActiveCell.Offset(1, 0).Select
    Loop While ActiveCell.Value2 <> Empty
End Sub
查看更多
登录 后发表回答