Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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-使用VBA代码替换公式中日期表单中的工作表名称_Excel_Vba_Properties - Fatal编程技术网

Excel-使用VBA代码替换公式中日期表单中的工作表名称

Excel-使用VBA代码替换公式中日期表单中的工作表名称,excel,vba,properties,Excel,Vba,Properties,正如可能令人困惑的标题所说,我正在为工作簿编写一套自动化工具,我遇到了一个障碍 我有一个函数可以生成一个新工作表,并将当前日期指定为名称,格式为“dd-mm-yyyy”(不带引号),还有一个函数可以更新新工作表中所有必需的公式 有一列用于计算当前图纸和上一张图纸之间列中的值之间的差值。运行时,代码将执行并替换名称,但由于某些原因,仅将年份指定为图纸名称,而不是整个日期。这将导致无效的引用错误 例如: 前页名称:23-5-2019 当前页名称:25-5-2019 Sub Macro3() to_r

正如可能令人困惑的标题所说,我正在为工作簿编写一套自动化工具,我遇到了一个障碍

我有一个函数可以生成一个新工作表,并将当前日期指定为名称,格式为“dd-mm-yyyy”(不带引号),还有一个函数可以更新新工作表中所有必需的公式

有一列用于计算当前图纸和上一张图纸之间列中的值之间的差值。运行时,代码将执行并替换名称,但由于某些原因,仅将年份指定为图纸名称,而不是整个日期。这将导致无效的引用错误

例如: 前页名称:23-5-2019

当前页名称:25-5-2019

Sub Macro3()
to_replace = Sheets(3).Name
replace_val = Sheets(2).Name
    Cells.Replace What:=to_replace, Replacement:=replace_val, LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
当前表格中更改的公式应为:=C3-‘23-5-2019’!C3

但它却变成:=C3-23-5-‘2019’!C3

更换代码如下:

Sub FormulaUpdate()

range("D2:D100").Replace 
What:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.count - 2).name, 
Replacement:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.count - 1).name, 
LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub

非常感谢您的帮助:)

我无法在代码中复制这一点,当我将工作表(3)命名为23-5-2019,将工作表(2)命名为25-5-2019时,它与下面的工作方式一样

Sub Macro3()
to_replace = Sheets(3).Name
replace_val = Sheets(2).Name
    Cells.Replace What:=to_replace, Replacement:=replace_val, LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
我建议一步一步地调试,确认要查找的文本值,并在其发生之前替换这些值

在执行查找/替换之前,还要确认已创建新图纸

希望有帮助