171 Aufrufe
Gefragt in Tabellenkalkulation von vernichter Mitglied (164 Punkte)

Hallo zusammen und Guten Morgen an alle,

ich brauche nach langer Zeit mal wieder euer Fachwissen. Es geht mir im groben darum das ich in Spalte A ab Zeile 12 in die nachste freie Zelle einen Wert schreibe und diesen auch wieder löschen kann was eigentlich auch schon ganz gut funktionert.

Ich habe hierzu ein paar Fragen:

1.) wenn ich in dieser Tabelle z.B. die Zeile 15 ausblende dann soll das vorhandene Makro diese Zeile überspringen und in Zeile 16 weiter schreiben (wie kann man hier also abfragen welche Zeilen in einem Bereich ein,- oder ausgeblendet sind in der richtigen Datei können alle Zeilen in bestimmten Breichen ein,- oder ausgeblendet werden

2.) ich kann in dem vorhandenen Makro angeben ab welcher Zeile es beginnt aber nicht wo es enden soll

Info:

Das vorhandene Makro ist aus dem Netz gefischt und an meine Bedürfnisse angepasst. Ich habe wieder eine Testdatei erstellt und versucht alle Angaben zu machen so das es vielleicht leichter zu erkennen ist.

Vielleicht habt Ihr eine Idee wie ich das bewerkstelligen kann

Mit freundlichen Grüßen

energun222

https://www.dropbox.com/scl/fi/6ehdgrmi56g7ii5napcbv/nur-vz.xlsb?dl=0&rlkey=qnlpyd3cqicuo4xivcm4u6uis

2 Antworten

+1 Punkt
Beantwortet von m-o Profi (18.1k Punkte)
ausgewählt von vernichter
 
Beste Antwort

Hallo energun222,

ob eine Zeile ausgeblendet ist, kannst mit der Hidden-Eigenschaft abfragen.

Ich habe mal ein Makro aus deiner Beispieldatei entsprechend angepasst:

Private Sub CommandButton1_Click()

With Worksheets("Tabelle1")
 For i = 12 To .Cells(Rows.Count, 1).End(xlUp).Row
   'nur eingeblendete Zellen prüfen
   If .Rows(i).Hidden = False Then
       If .Range("A" & i).Value = "" And .Range("N32") = 0 Then
          ersteLeereZelle = i
          .Range("A" & ersteLeereZelle) = .Range("H32")
          Exit For
        End If

        If .Range("A" & i).Value = .Range("H32") And .Range("N32") = 1 Then
          ersteLeereZelle = i
          .Range("A" & ersteLeereZelle) = ""
          Exit For
        End If
    End If
 Next i
 
End With

End Sub

Du gibst hier ja ein Ende an, das mit

.Cells(Rows.Count, 1).End(xlUp).Row

ermittelt wird, das ist die letzte beschriebene Zelle in Spalte A.

Du kannst natürlich auch einfach eine Zahl angeben:

 For i = 12 To 1000

Es gibt verschiedene Möglichkeiten Schleifen zu programmieren: Tutorial Schleifen

Gruß

M.O.

0 Punkte
Beantwortet von vernichter Mitglied (164 Punkte)
Hallo M.O.

vielen Dank für deine weitere Hilfe. Funktioniert auf Anhieb und wieder was neues gelernt!

Danke und Gruß

energun222
...