Clever-Excel-Forum

Normale Version: VB Schleife -> alle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich bräuchte da mal wieder eure hilfe =)

Ich habe in dem Sheet(Stationen) eine Liste. 
In anderen Sheets (mit den Namen "1"  "2"  "3" usw.) werden Zeilen durch "=Stationen!C236" kopiert. 
Im Sheet(Stationen) möchte ich eine neue Zeile hinzufügen, die wiederum in allen anderen Sheets(1,2,3 usw.) automatisch hinzugefügt wird, aber nur dort wo die oberste und unterste Zeile identisch ist. 
" ist ein bisschen kompliziert " 
Im folgendem VB habe ich das schon soweit erreicht, das er mir nur in einem Sheet1 diese Zeile kopiert. Mir fehlt aber das er alle Sheets (1,2,3 usw.) überprüft -> Schleife 

Ich hoffe ihr könnt mir das weiterhelfen =)
______________________________________________________________________________________________________

Code:
Sub Zeile_Einfuegen()

Dim zeile As Integer 'gewählte zelle

zeile = ActiveCell.Row

'drei Zellen markieren
With ActiveCell
Range(.Offset(0, -2), .Offset(0, 0)).Select
End With

'neue Zellen in Tab Stationen einfügen
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
zeile = zeile + 1 'Zeile ist nun nach unten gerutscht

'Schleife MTM 1 bis 5

'in MTM Tab nach Formel suchen
Dim zeilen_nr As Integer 'zeile in MTM
zeilen_nr = finde_eintrag(zeile) 'Funktion Einträge suchen

'Zelle in MTM auswählen
Sheets("1").Select              'muss noch als schleife
Range("F" & zeilen_nr).Select
'Zellen markieren A bis F
With ActiveCell
Range(.Offset(0, -5), .Offset(0, 0)).Select
End With
'neue Zellen einfügen
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

'in F Verlinkung zu Stationen Zelle erstellen
Sheets("1").Range("F" & zeilen_nr) = "=Stationen!C" & zeile - 1 'Muss noch als schleife

'zu Tab Stationen zurück
Sheets("Stationen").Activate

End Sub


'Eintraege suchen
Private Function finde_eintrag(zeile As Integer) As Integer
Dim zelleninhalt As String
Dim referenzzeile As Integer

    finde_eintrag = 0
    anzahl_zeilen = WorksheetFunction.CountA(Sheets("1").Range("F:F")) 'muss noch als schleife
 
    For i = 10 To anzahl_zeilen 'suche alle zeilen in MTM ab
    zelleninhalt = Sheets("1").Range("F" & i).Formula 'muss noch als Schleife
    zelleninhalt = Mid(zelleninhalt, 13, 3) 'betrachte nur die zeilennummer aus der Funktion
    referenzzeile = zelleninhalt
            'checke inhalt
        If referenzzeile = zeile Then
        finde_eintrag = i
        Else
        End If
    Next i
End Function

Vielen Dank im voraus

Gruß Homann
Du kannst die einzelnen Tabellenblätter einer Mappe folgendermaßen durchlaufen:

1. Definiere eine Variant-Variable:

Code:
Dim Blatt As Variant

2. Dann baue eine 'FOR EACH'-Schleife in Deinen Code ein:

Code:
For Each Blatt In ActiveWorkbook.Worksheets

   'hier steht Dein ganzer Code, der sich auf die Tabelle bezieht:
   'Auf das aktuelle Blatt innerhalb dieser Schleife greifst Du über die Objekt-Variable Blatt zu:
   'Beispiel:

   MsgBox Blatt.Name
  'Willst Du bestimmte Blätter ausschließen, dann prüfen z.B. den Namen ab und übergehe dann das Blatt
  if(Blatt.Name <> "Tabelle1") then 'Achte auf Groß- und Kleinschreibung oder nutze beim Vergleich die Funktion UCASE()

  end if

Next