удаление диапазона при закрытии книги, xls vba - PullRequest
0 голосов
/ 21 июня 2011

Я бы хотел диапазон

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 Ответ

1 голос
/ 21 июня 2011

Вы можете использовать функцию события 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

- = EDIT = -

Во-первых, вам не нужно выбирать каждую ячейку перед установкой формулы.Например, вы можете сделать:

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

Вместо:

Range("D2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,ZTAXLIST!C2:C9,4)"

Кроме того, вы поместили Private Sub Workbook_BeforeClose (Cancel As Boolean) в часть ThisWorkbook в редакторе VBA?Это не должно быть в модуле или модуле рабочего листа!

С уважением,

Макс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...