Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

leere Zeilen eines Range-Objekts überspringen
#1
Hallo zusammen,
da ich die Basic von VBA noch nicht so gut kann, bräuchte ich nochmals Hilfe.

Ich habe ein Makro erstellt, das von einer Namensliste Tabellenblätter von den Namen von einer Vorlage erstellt und enige weitere Daten einfügt.
Das Problem ist, dass wenn in der Namensliste einmal eine Zelle mit Namen leer ist, bricht das Makro ab. Soll aber eigentlich einfach diese Zeile überspringen und weitermachen.

Ich dachte an eine if Schleife, aber ich habs leider nicht hingekriegt.

Für Hilfe wäre ich dankbar.
Grüße



Code:
Sub FuegeBlaetterMitNamenEin()
 Dim Zelle As Range
 With ActiveWorkbook
   For Each Zelle In .ActiveSheet.Range("a2:a10000").Cells
     If Zelle = IsEmpty Then Next Zelle Else
     With .Sheets.Add(After:=.Worksheets(.Worksheets.Count), Type:="C:\Users\xxx\AppData\Roaming\Microsoft\Templates\xxx.xltm")
       .Name = Zelle.Text
       .Range("B3").Value = Zelle.Offset(0, 0).Value
       .Range("B5").Value = Zelle.Offset(0, 1).Value
       .Range("G5").Value = Zelle.Offset(0, 2).Value
       .Range("E5").Value = Zelle.Offset(0, 3).Value
       .Range("G12").Value = Zelle.Offset(0, 4).Value
     End With
   Next Zelle
  End If
 End With
End Sub
Antworten Top
#2
Hallo,

Code:
Sub FuegeBlaetterMitNamenEin()
Dim Zelle As Range
With ActiveWorkbook
  For Each Zelle In .ActiveSheet.Range("a2:a10000").Cells
    If Zelle = IsEmpty Then
    Else
    With .Sheets.Add(After:=.Worksheets(.Worksheets.Count), Type:="C:\Users\xxx\AppData\Roaming\Microsoft\Templates\xxx.xltm")
      .Name = Zelle.Text
      .Range("B3").Value = Zelle.Offset(0, 0).Value
      .Range("B5").Value = Zelle.Offset(0, 1).Value
      .Range("G5").Value = Zelle.Offset(0, 2).Value
      .Range("E5").Value = Zelle.Offset(0, 3).Value
      .Range("G12").Value = Zelle.Offset(0, 4).Value
    End With
    End if
  Next Zelle
End With
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Ich kriegs halt irgendwie mit dem Syntax nicht hin.
er meldet:
Fehler beim Kompilieren
Argument (Is Empty) ist nicht optional

Der letzte funktionierende Code ohne die if schleife war:

Code:
Sub FuegeBlaetterMitNamenEin()
 Dim Zelle As Range
 With ActiveWorkbook
   For Each Zelle In .ActiveSheet.Range("a2:a100").Cells
     With .Sheets.Add(After:=.Worksheets(.Worksheets.Count), Type:="C:\Users\xxx\AppData\Roaming\Microsoft\Templates\xxx.xltm")
       .Name = Zelle.Text
       .Range("B3").Value = Zelle.Offset(0, 0).Value
       .Range("B5").Value = Zelle.Offset(0, 1).Value
        .Range("G5").Value = Zelle.Offset(0, 2).Value
        .Range("E5").Value = Zelle.Offset(0, 3).Value
        .Range("G12").Value = Zelle.Offset(0, 4).Value
     End With
   Next Zelle
 End With
End Sub
Antworten Top
#4
Hallo,

sorry, habe es geändert und zwar habe jetzt auf das Else durch die Negierung verzichtet.

Code:
ub FuegeBlaetterMitNamenEin()
Dim Zelle As Range
With ActiveWorkbook
   For Each Zelle In .ActiveSheet.Range("a2:a10000").Cells
     If Not IsEmpty(Zelle) Then
     With .Sheets.Add(After:=.Worksheets(.Worksheets.Count), Type:="C:\Users\xxx\AppData\Roaming\Microsoft\Templates\xxx.xltm")
       .Name = Zelle.Text
       .Range("B3").Value = Zelle.Offset(0, 0).Value
       .Range("B5").Value = Zelle.Offset(0, 1).Value
       .Range("G5").Value = Zelle.Offset(0, 2).Value
       .Range("E5").Value = Zelle.Offset(0, 3).Value
       .Range("G12").Value = Zelle.Offset(0, 4).Value
     End With
    End If
   Next Zelle
End With
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Laddat
Antworten Top
#5
Hat super geklappt.
Vielen Dank für die Hilfe und einen schönen Tag dir noch!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste