Excel 关闭工作簿时删除范围,xls vba

Excel 关闭工作簿时删除范围,xls vba,excel,vba,Excel,Vba,我想要这个范围 Range("A2:G" & z) 要在关闭工作簿时删除-是否有人可以帮助我修改代码 谢谢, 凯 这就是我所尝试的: Option Explicit Sub Makro1() 'insert clipboard Workbooks("Pfl_SchutzStat.xls").Activate Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:

我想要这个范围

Range("A2:G" & z)
要在关闭工作簿时删除-是否有人可以帮助我修改代码

谢谢, 凯

这就是我所尝试的:

Option Explicit
Sub Makro1()
    'insert clipboard
    Workbooks("Pfl_SchutzStat.xls").Activate
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    'insert formulas to look up sheet ZTAXLIST
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,1)"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,3)"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,4)"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,5)"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,6)"
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,7)"
    'autofill formulas
    Dim z As Integer
    z = Range("A2").End(xlDown).Row
    Range("B2:G2").Select
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("B2:G" & z)
    Range("A1").Select
End Sub
在这里,我添加了应该删除范围的子对象 我还试图使它成为关闭工作簿而不保存,也不要求它 我试图插入一个msgbox-关闭时,宏似乎没有被调用

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim ev As Boolean
    Dim datei As String
    Dim z As Integer
    z = Range("A2").End(xlDown).Row
    datei = ThisWorkbook.Name
    ev = Application.EnableEvents
    Application.EnableEvents = False            
    If Workbooks.Count > 1 Then
        ActiveWorkbook.Close SaveChanges:=False
    Else
        Workbooks(datei).Saved = True
    Application.Quit
    End If
    Worksheets("Abfrage").Range("A2:G" & z).ClearContents
    Application.EnableEvents = ev
End Sub

您可以在关闭之前使用事件vba函数:在此处查找更多信息:

不要忘记指向要删除行的工作表

以下是一个例子:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'delete the lines of the "Sheet1"
    Dim z As Integer
    z = 2   'or whatever depending on your previous code

    'replace "Sheet1" by the name of your sheet
    Worksheets("Sheet1").Range("A2:G" & z).Delete Shift:=xlUp    
End Sub
-=编辑=-

首先,在设置公式之前,不需要选择每个单元格。例如,你可以做:

Range("D2").FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,4)"
而不是:

Range("D2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,4)"
此外,您是否在VBA编辑器的ThisWorkbook部分中放置了私有子工作簿\u BeforeClose(取消为布尔值)?它不应该在模块或工作表模块中

问候,


Max

顺便说一句,如果您的问题符合您的要求,您可以接受前面问题的答案,或者,
工作表(“Sheet1”).范围(“A2:G”&z).ClearContents
。我感觉OP并不是真的想删除单元格,只是想删除单元格中的内容。谢谢,我在宏前面添加了“option explicit”和建议的代码。我指着工作表和所有东西,但当我关闭时,没有任何东西被删除。。我忘了什么吗?没有练习册,我们帮不了你更多。您可以尝试调试(在代码中放置断点)并查看变量或在代码中放置msgbox。我已将完整代码添加到原始帖子中-也许可以从中看到错误。主要问题是在靠近此工作簿之前放置工作簿!非常感谢-终于工作了。。