2016-04-09 4 views
0

Bitte können Sie mir bei meinem VBA-Problem helfen? Ich möchte, dass das Makro 4 Spalten beginnend in Spalte C einfügt, und benennen Sie dann jede Spalte wie folgt. Jedes Mal, wenn ich das Makro ausführe, fügt es 4 Spalten hinzu oder wiederholt den Befehl. Wie kann ich das stoppen? Die Spalten sollten nur bei der ersten Ausführung und nicht später eingefügt werden. Vielen Dank im Voraus.Spalten nur einmal einfügen, wenn ich das Makro zum ersten Mal ausführe und nicht erneut, wenn ich das Makro zum zweiten/dritten Mal usw. ausführe

ActiveWorkbook.Worksheets("SAPZK67C").Range("C:F").EntireColumn.Insert 
ActiveWorkbook.Worksheets("SAPZK67C").Range("C1").Value = "Factor" 
ActiveWorkbook.Worksheets("SAPZK67C").Range("D1").Value = "Materials" 
ActiveWorkbook.Worksheets("SAPZK67C").Range("E1").Value = "Labour" 
ActiveWorkbook.Worksheets("SAPZK67C").Range("F1").Value = "Overheads" 
ActiveWorkbook.Worksheets("SAPZK67C").Columns("A:I").AutoFit 
+0

Danke

passen Sie es Ihren tatsächlichen Bedarf laufen würde, genau das tut, was es auf dem Zinn sagt. Glattbutt! – Zakky

Antwort

0

Sie diese

Option

Sub main() 
Dim headings As Variant 

headings = Array("Factor", "Materials", "Labour", "Overheads") 

With ActiveWorkbook.Worksheets("SAPZK67C") 
    If Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(.Range("C1:F1").value)), "|") <> Join(headings, "|") Then 
     .Range("C:F").EntireColumn.Insert 
     .Range("C1:F1").value = headings 
    End If 
    .Columns("A:I").AutoFit 
End With 

End Sub 

es prüft Explicit versuchen könnte für alle Überschriften, um an Ort und Stelle zu sein, „Akt ".

ich auch argumentiert, dass .Autofit immer

0

Umwickeln Sie einfach den Code, den Sie in einer if-Anweisung haben. Dies ist nicht getestet, aber es soll in etwa so aussehen:

If ActiveWorkbook.Worksheets("SAPZK67C").Range("C1").Value <> "Factor" Then 
    ActiveWorkbook.Worksheets("SAPZK67C").Range("C:F").EntireColumn.Insert 
    ActiveWorkbook.Worksheets("SAPZK67C").Range("C1").Value = "Factor" 
    ActiveWorkbook.Worksheets("SAPZK67C").Range("D1").Value = "Materials" 
    ActiveWorkbook.Worksheets("SAPZK67C").Range("E1").Value = "Labour" 
    ActiveWorkbook.Worksheets("SAPZK67C").Range("F1").Value = "Overheads" 
    ActiveWorkbook.Worksheets("SAPZK67C").Columns("A:I").AutoFit 
End if 
+0

Edited meine Antwort als einige VBA-Syntax kam zu mir zurück – nhouser9

+0

VBA würde nicht akzeptieren // nichts tun – Zakky

+0

@Zakky Bearbeitet, nicht gleich Operator zu verwenden – nhouser9

Verwandte Themen