Excel visual basic 1004错误,对象“范围”的方法“值”失败
我为excel制作了一个小插件。 但由于某种原因,它失败了。在新启动excel后,它工作正常,但是当我将粘贴文本复制到excel并尝试运行它时,它给出了错误:运行时“1004”,对象“range”的方法“Value”失败 我想做的是简单地退出。我喜欢构建公式:B5+B6/2,前面不使用“=”,这样Excel就不会计算这些表达式。最后我得到了一个大的列,在我完成后,我想选择列的第一个单元格进行计算,激活我的外接程序,他在前面放一个“=”并向下循环直到一个空单元格。这样,我列中的每个单元格现在都可以计算 我迷路了,你能帮我吗Excel visual basic 1004错误,对象“范围”的方法“值”失败,excel,vba,runtime,Excel,Vba,Runtime,我为excel制作了一个小插件。 但由于某种原因,它失败了。在新启动excel后,它工作正常,但是当我将粘贴文本复制到excel并尝试运行它时,它给出了错误:运行时“1004”,对象“range”的方法“Value”失败 我想做的是简单地退出。我喜欢构建公式:B5+B6/2,前面不使用“=”,这样Excel就不会计算这些表达式。最后我得到了一个大的列,在我完成后,我想选择列的第一个单元格进行计算,激活我的外接程序,他在前面放一个“=”并向下循环直到一个空单元格。这样,我列中的每个单元格现在都可以
Sub makeFormula()
Do
ActiveCell.Value = "=" & ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop While ActiveCell.Value <> Empty
end Sub
您需要将值传递给临时字符串变量。为我工作:
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
我找到了解决方案,通过调试我发现逗号是问题所在,所以我将逗号改为点,然后计算。现在它就像一个符咒
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
谢谢你的建议 单元格中的值是数字还是文本?如果它们不是数字,那么您需要ActiveCell.Formula=&ActiveCell.Value&我认为这个问题源于一个“ghost”excel进程,它试图引用其中的元素。使用activesheet或range或引用工作簿对象,以及在工作簿或工作表对象上使用“With”命令,似乎会破坏它。我的理解是,你需要保持优雅,将你的对象设置为零,但我仍然有一个程序,它会因为这个错误而中断每一次运行。使用任务管理器并终止excel进程,它应该会运行..谢谢你这么快的回答,但到目前为止运气不好,当我尝试你的代码时,什么都没有发生。也许我不清楚我的目标。我想选择一个单元格,然后激活我的外接程序,该外接程序将在单元格内容前面包含一个“=”,以便excel将其作为函数接受并计算它。它会对列中的每个单元格重复此操作,直到它读取到一个空单元格。如果您更新您的问题,以便更具体地了解要转换为公式的单元格中的内容,可能会有所帮助。如果您不需要单元格值周围的引号,那么就不要包含它们……我尝试了这个,但仍然没有成功。我从另一个excel文件复制:2,1+0,3*3,6激活加载项,再次出现相同错误。然后我把逗号改成了点,它起作用了。。。看来逗号是个问题
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