2011-06-21 31 views
0

我想刪除範圍關閉工作簿時,XLS VBA

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 
+1

順便說一句,你能接受從以前的問題的答案,如果任何配合你問什麼 – JMax

回答

1

您可以使用事件VBA函數BeforeClose:在這裏找到更多的信息:http://msdn.microsoft.com/en-us/library/aa220801%28v=office.11%29.aspx

不要忘記指向要刪除線的工作表。

下面是一個例子:

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)" 

另外,你把私人小組Workbook_BeforeClose(取消正如布爾)在VBA編輯器的ThisWorkbook部分?它不應該在模塊或工作表模塊中!

問候,

最大

+0

或者'工作表(「工作表Sheet1」)範圍(「A2:G」 &z).ClearContents'。我有一種感覺,OP並不是真的想要刪除這些單元格,而只是刪除其中的內容。 –

+0

謝謝,我添加了「選項顯式」和我的宏前面提出的代碼。我指着工作表和一切,但是當我關閉什麼都沒有刪除..我忘了什麼? – Kay

+0

沒有工作簿,我們不能幫助您更多。您可以嘗試調試(在代碼中放置一個斷點)並查看變量或將msgbox放入代碼中。 – JMax

相關問題