Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

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
Vba 数据更新后,保留单元格值而不是公式,并删除数据表_Vba_Excel - Fatal编程技术网

Vba 数据更新后,保留单元格值而不是公式,并删除数据表

Vba 数据更新后,保留单元格值而不是公式,并删除数据表,vba,excel,Vba,Excel,我有一个xlsx电子表格,里面有一堆包含数据或公式的表格。假设sheet1包含数据,sheet2包含引用sheet1中数据的公式。当sheet1使用来自SAS程序的新数据更新时,我尝试执行以下操作: 将表2转换为仅值,即删除后面的公式 删除第1页 保存文件 我需要通过电子表格自动完成这项工作,并在有更新时自动运行宏/程序 到目前为止,我得到的是粘贴值而不是公式: Sub Sample() Dim ws As Worksheet Set ws = ThisWorkbook.She

我有一个xlsx电子表格,里面有一堆包含数据或公式的表格。假设sheet1包含数据,sheet2包含引用sheet1中数据的公式。当sheet1使用来自SAS程序的新数据更新时,我尝试执行以下操作:

将表2转换为仅值,即删除后面的公式 删除第1页 保存文件 我需要通过电子表格自动完成这项工作,并在有更新时自动运行宏/程序

到目前为止,我得到的是粘贴值而不是公式:

Sub Sample()
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("tab2")

    ws.UsedRange.Value = ws.UsedRange.Value
End Sub
我真的不熟悉VBA。

试试这个:

Sub Sample()
        Dim ws As Worksheet

        Set ws = ThisWorkbook.Sheets("tab2")

        ws.UsedRange.Value = ws.UsedRange.Value

        Application.DisplayAlerts = False
            Sheets("sheet1").Delete
        Application.DisplayAlerts = True

        ActiveWorkbook.Save

    End Sub

只有在表2中才有这些值

您想删除工作表1应该有一个弹出窗口来检查您是否真的想删除工作表。。。我们将在您之前关闭,然后在以下时间后重新打开:

Application.DisplayAlerts = False 
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
然后to.SaveAs提示输入要另存为的文件名

ThisWorkbook.SaveAs Filename:=fName

为什么不抓起两张纸的想法,根据我在问题中得到的答案进行推断呢

尝试使用宏

Range("A1:P10").Select
With Selection
    .Value = .Value
End With
这会将选定范围内的每个公式转换为其值。只是不要尝试使用单元格。选择。当我尝试它时,我得到了一个与内存相关的错误。如果您的电子表格大小不同,则首先计算底部单元格

Sub Convert()
    ' Table Bottom
    Dim TB As Long
    ' Set Table Bottom Variable
    TB = Range("A65000").End(xlUp).Row 'finds bottom row
    ' Change Formulas in Range to Values
    Range("A1:P" & TB).Select
    With Selection
        .Value = .Value
    End With
End Sub
有时,我不得不根据电子表格更改列以查找底部行,但这是一般的想法


我认为,如果您将其放在提取更新的代码末尾,或者在更新完成后单独运行它,那么这将完成您最终要做的事情。你的目标似乎不是要有两个不同的电子表格。只有一个电子表格是唯一的值。

如果在更新时总是删除sheet1,这会给您带来一些麻烦。@Vinnie实际上我制作了一份电子表格的副本,我用它作为模板,它就是更新的副本。我怎么能在整个电子表格上自动执行此操作,例如,使用tab2和sheet1的参数?您希望在这些工作表上自动执行哪些操作?例如,如果我有20张工作表要删除,您必须确定要删除哪些工作表。