2011-06-21 10 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

あなたは BeforeCloseイベントのVBA機能を使用することができます。ここではより多くの情報を見つける:

http://msdn.microsoft.com/en-us/library/aa220801%28v=office.11%29.aspxはあなたの行を削除するワークシートを指すように忘れないでください。 = EDIT = - -

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部にプライベートサブWorkbook_BeforeClose(ブールとしてキャンセル)を入れたのですか?それは、モジュールまたはワークシートモジュール内にあってはなりません!

よろしく、

マックスところで、あなたは、以前の質問から回答を受け取ることができ

+0

を求めたものに任意のフィットあるいは、 'ワークシート(「シート1」)範囲(「A2:G」 &z).ClearContents'。私はOPが実際に細胞を削除したくないという気持ちがありますが、その中にあるものを消去するだけです。 –

+0

ありがとう、私は "オプションの明示"と私のマクロの前に提案されたコードを追加しました。私はワークシートとすべてを指していますが、何も閉じていないときは削除されます。何か忘れてしまったのですか? – Kay

+0

ワークブックなしでは、私たちはもっとあなたを助けることはできません。デバッグする(コードにブレークポイントを入れる)ことができ、varsを見るか、コードにmsgboxを置くことができます。 – JMax

関連する問題