Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel visual basic 1004错误,对象“范围”的方法“值”失败_Excel_Vba_Runtime - Fatal编程技术网

Excel visual basic 1004错误,对象“范围”的方法“值”失败

Excel visual basic 1004错误,对象“范围”的方法“值”失败,excel,vba,runtime,Excel,Vba,Runtime,我为excel制作了一个小插件。 但由于某种原因,它失败了。在新启动excel后,它工作正常,但是当我将粘贴文本复制到excel并尝试运行它时,它给出了错误:运行时“1004”,对象“range”的方法“Value”失败 我想做的是简单地退出。我喜欢构建公式:B5+B6/2,前面不使用“=”,这样Excel就不会计算这些表达式。最后我得到了一个大的列,在我完成后,我想选择列的第一个单元格进行计算,激活我的外接程序,他在前面放一个“=”并向下循环直到一个空单元格。这样,我列中的每个单元格现在都可以

我为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