ich bin grade dabei meine ersten Gehversuche mit VBA zu tätigen.
Folgenden teil Script habe ich geschrieben
Public Sub find()
Dim Start1 As Range
Dim Ende1 As Range
Dim Start2 As Range
Dim Ende2 As Range
Dim Start3 As Range
Dim Ende3 As Range
Dim Start4 As Range
Dim Ende4 As Range
Dim Start5 As Range
Dim Ende5 As Range
Dim Start6 As Range
Dim Ende6 As Range
Set Start1 = Range("A:Z").find("Original Target 1")
Set Ende1 = Range("A:Z").find("Original Target 1", After:=Start1)
Set Start2 = Range("A:Z").find("No. Of Tubes 1")
Set Ende2 = Range("A:Z").find("No. Of Tubes 1", After:=Start2)
Set Start3 = Range("A:Z").find("Fraction Sites 1")
Set Ende3 = Range("A:Z").find("Fraction Sites 1", After:=Start3)
Set Start4 = Range("A:Z").find("No. Of Tubes 2")
Set Ende4 = Range("A:Z").find("No. Of Tubes 2", After:=Start4)
Set Start5 = Range("A:Z").find("No. Of Tubes 3")
Set Ende5 = Range("A:Z").find("No. Of Tubes 3", After:=Start5)
Set Start6 = Range("A:Z").find("No. Of Tubes 4")
Set Ende6 = Range("A:Z").find("No. Of Tubes 4", After:=Start6)
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Fraktionen"
Range(Start1, Ende1).Copy
Sheets("Fraktionen").Range("B1").Select
ActiveSheet.Paste
Range(Start2, Ende2).Copy
Sheets("Fraktionen").Range("E1").Select
ActiveSheet.Paste
Range(Start3, Ende3).Copy
Sheets("Fraktionen").Range("D1").Select
ActiveSheet.Paste
Range(Start4, Ende4).Copy
Sheets("Fraktionen").Range("F1").Select
ActiveSheet.Paste
Range(Start5, Ende5).Copy
Sheets("Fraktionen").Range("G1").Select
ActiveSheet.Paste
Range(Start6, Ende6).Copy
Sheets("Fraktionen").Range("H1").Select
ActiveSheet.Paste
Range("C2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[2]:RC[5])"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C97"), Type:=xlFillDefault
Range("C2:C97").Select
Range("C1").Select
ActiveCell.FormulaR1C1 = "No. Of Tubes"
Range("C2").Select
Probem ist nun das wenn .find den Begriff nicht findet die Variable keine Range hat und es bei z.B. Range(Start4, Ende4).Copy dann zum Fehler kommt weil Range "leer" ist.
Wie kann ich diesen Fehler beseitigen so das z.B. nach
Range(Start5, Ende5).Copy
Sheets("Fraktionen").Range("G1").Select
ActiveSheet.Paste
wobei Start5 und Ende5 keinen Wert haben, an einer anderen Stelle des Scripts weiter gemacht macht.
Denn wenn Start5 und Ende5 leer sind, ist auch Start6 und Ende6 leer.
Somit sollte dann im Scipt hier weiter gearbeitet werden.
Range("C2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[2]:RC[5])"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C97"), Type:=xlFillDefault
Range("C2:C97").Select
Range("C1").Select
ActiveCell.FormulaR1C1 = "No. Of Tubes"
Range("C2").Select
Also so in der Art
Public Sub find()
Dim Start1 As Range
Dim Ende1 As Range
Dim Start2 As Range
Dim Ende2 As Range
Dim Start3 As Range
Dim Ende3 As Range
Dim Start4 As Range
Dim Ende4 As Range
Dim Start5 As Range
Dim Ende5 As Range
Dim Start6 As Range
Dim Ende6 As Range
Set Start1 = Range("A:Z").find("Original Target 1")
Set Ende1 = Range("A:Z").find("Original Target 1", After:=Start1)
Set Start2 = Range("A:Z").find("No. Of Tubes 1")
Set Ende2 = Range("A:Z").find("No. Of Tubes 1", After:=Start2)
Set Start3 = Range("A:Z").find("Fraction Sites 1")
Set Ende3 = Range("A:Z").find("Fraction Sites 1", After:=Start3)
Set Start4 = Range("A:Z").find("No. Of Tubes 2")
Set Ende4 = Range("A:Z").find("No. Of Tubes 2", After:=Start4)
Set Start5 = Range("A:Z").find("No. Of Tubes 3")
Set Ende5 = Range("A:Z").find("No. Of Tubes 3", After:=Start5)
Set Start6 = Range("A:Z").find("No. Of Tubes 4")
Set Ende6 = Range("A:Z").find("No. Of Tubes 4", After:=Start6)
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Fraktionen"
Range(Start1, Ende1).Copy
Sheets("Fraktionen").Range("B1").Select
ActiveSheet.Paste
Range(Start2, Ende2).Copy
Sheets("Fraktionen").Range("E1").Select
ActiveSheet.Paste
Range(Start3, Ende3).Copy
Sheets("Fraktionen").Range("D1").Select
ActiveSheet.Paste
Range(Start4, Ende4).Copy
Sheets("Fraktionen").Range("F1").Select
ActiveSheet.Paste
Range(Start5, Ende5).Copy
Sheets("Fraktionen").Range("G1").Select
ActiveSheet.Paste
Wenn Start5 & Ende5 leer dann weiter
Range(Start6, Ende6).Copy
Sheets("Fraktionen").Range("H1").Select
ActiveSheet.Paste
ab diesem Punkt
Range("C2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[2]:RC[5])"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C97"), Type:=xlFillDefault
Range("C2:C97").Select
Range("C1").Select
ActiveCell.FormulaR1C1 = "No. Of Tubes"
Range("C2").Select
Könnte man das mit einer If Abfrage machen die vor dem eigentlichen copy Befehl steht und aussagt das wenn StartX & EndeX leer sind dann weiter ab Punkt Y im Script und wenn nicht leer dann weiter im normalen verlauf?
Und dies dann vor jedem Copy Befehl.
Gruß
Joker