我有一张xlsx电子表格,其中包含一堆包含数据或公式的工作表。让我们说sheet1有数据,sheet2有公式引用sheet1中的数据。当使用新数据(来自SAS程序)更新sheet1时,我尝试执行以下操作:
我需要通过电子表格自动执行此操作,并在有更新时让宏/程序自动运行。
到目前为止,这里是我得到的(粘贴值而不是公式):
Sub Sample()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("tab2")
ws.UsedRange.Value = ws.UsedRange.Value
End Sub
我真的不熟悉VBA。
答案 0 :(得分:1)
您只在Sheet2中获得了值。
你想要删除Sheet1(应该有一个弹出窗口来检查你是否真的想要删除这个工作表...我们将在你做之前将其关闭,然后再重新开启):
Application.DisplayAlerts = False
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
然后到.SaveAs(提示输入文件名)
ThisWorkbook.SaveAs Filename:=fName
答案 1 :(得分:0)
试试这个:
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 :(得分:0)
为什么不只是草拟两张纸,然后在问题中得到答案呢?
Use formula to update cells, but as values
尝试使用
宏Range("A1:P10").Select
With Selection
.Value = .Value
End With
这会将您选择范围内的每个公式转换为其值。只是不要尝试使用Cells.Select
。尝试时,出现与内存相关的错误。如果您的电子表格大小各异,请先计算底部的单元格。
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
有时我必须根据电子表格更改用于查找底部行的列,但这是一般性的想法。
我认为,如果将其放置在提取更新的代码的末尾,或者在更新完成后单独运行,则可以达到最终目的。您的目标似乎不是要拥有两个不同的电子表格。只是一个电子表格,仅是值。