06.08.2020, 15:40
Hallo zusammen,
ich bin leider ein ziemlicher Excel VBA Laie und gerade etwas am verzweifeln. Deshalb hoffe ich, dass ihr mir vielleicht helfen könnt.
Konkret möchte ich in einem Tabellenblatt 2 im Zellbereich E8:J8 nach einem "x" suchen. Findet er in einer Zelle ein "x" soll mir Excel die in Tabelle2 im Zellbereich E7:J7 zugehörigen Namen in den Zellbereich B4:G4 in das Tabellenblatt 1 schreiben.
Mein Code dazu sieht so aus:
Sub Werte_kopieren()
Dim i As Long
For i = 5 To 11
If Worksheets("Tabelle2").Cells(8, i) = "x" Then
Worksheets("Tabelle1").Cells(4, 2) = Worksheets("Tabelle2").Cells(7, i)
End If
Next
End Sub
1. Problem:
Starte ich das Makro und findet es mehrmals ein "x" schreibt es alle Namen in die Zelle B4, überschreibt diese also immer. In gewisser Hinsicht auch logisch, da ich ja nur die Zelle "B4" als Ziel angegeben habt. Wie schaffe ich es allerdings, dass er mir beginnend mit B4 die Werte in den Folgezellen B5, B6, B7 auflistet?
Also quasi immer in die nächste freie Spalte?
Ich habe mich jetzt durch das Netz gewühlt und unter anderem den nachfolgenden Code gefunden:
lngLetzteSpalte = Cells(2, Columns.Count).End(xlToLeft).Column
With Range("C2:C200")
Cells(2, lngLetzteSpalte + 1).Resize(.Rows.Count, 1) = .Value
End With
Ich muss aber ehrlich sagen ich verstehe den Code nicht. Ist jemand so nett und könnte mir erklären, wie ich es auf meinen Fall anpassen muss, dass es funktioniert?
2. Problem:
Wie muss ich es handhaben, wenn ich mehrere Variablen gleichzeitig einsetzen will?
Konkret:
Ich möchte die Zelle B4 ebenfalls teilweise als Variable definieren und habe den Code wie folgt geändert:
Sub Werte_kopieren()
Dim i As Long
Dim j As Long
For i = 5 To 11
For j = 2 To 8
If Worksheets("Tabelle2").Cells(8, i) = "" Then
Next i
Else
Worksheets("Tabelle1").Cells(4, j) = Worksheets("Tabelle2").Cells(7, i)
End If
Next i
Next j
End Sub
Meinem Verständis nach, prüft das Makro nun, ob die Zelle E8 einen Inhalt hat. Ist dies nicht der Fall, springt es weiter auf F8 und prüft wieder ob die Zelle leer ist.
Angenommen in F8 befindet sich nun ein "x", kopiert er mir die Zelle F7 nach B4. Anschließend springt er sowohl mit der Varialbe "i", als auch "j" eins nach oben und beginnt wieder von vorne.
In der Realität bekomme ich jetzt von Excel allerdings einen "Next ohne For" Fehler. Alle Versuche meinerseits diesen zu beheben sind fehlgeschlagen. Kann mir jemand erklären, wie ich in einer "If" Bedingungen mehrere Variablen verschachtele, bzw. diese richtig (und auch unabhängig voneinander) hoch zähle?
Ich sage schon mal herzlichen Dank für jeden Ratschlag!
Viele Grüße
Sebbo
ich bin leider ein ziemlicher Excel VBA Laie und gerade etwas am verzweifeln. Deshalb hoffe ich, dass ihr mir vielleicht helfen könnt.
Konkret möchte ich in einem Tabellenblatt 2 im Zellbereich E8:J8 nach einem "x" suchen. Findet er in einer Zelle ein "x" soll mir Excel die in Tabelle2 im Zellbereich E7:J7 zugehörigen Namen in den Zellbereich B4:G4 in das Tabellenblatt 1 schreiben.
Mein Code dazu sieht so aus:
Sub Werte_kopieren()
Dim i As Long
For i = 5 To 11
If Worksheets("Tabelle2").Cells(8, i) = "x" Then
Worksheets("Tabelle1").Cells(4, 2) = Worksheets("Tabelle2").Cells(7, i)
End If
Next
End Sub
1. Problem:
Starte ich das Makro und findet es mehrmals ein "x" schreibt es alle Namen in die Zelle B4, überschreibt diese also immer. In gewisser Hinsicht auch logisch, da ich ja nur die Zelle "B4" als Ziel angegeben habt. Wie schaffe ich es allerdings, dass er mir beginnend mit B4 die Werte in den Folgezellen B5, B6, B7 auflistet?
Also quasi immer in die nächste freie Spalte?
Ich habe mich jetzt durch das Netz gewühlt und unter anderem den nachfolgenden Code gefunden:
lngLetzteSpalte = Cells(2, Columns.Count).End(xlToLeft).Column
With Range("C2:C200")
Cells(2, lngLetzteSpalte + 1).Resize(.Rows.Count, 1) = .Value
End With
Ich muss aber ehrlich sagen ich verstehe den Code nicht. Ist jemand so nett und könnte mir erklären, wie ich es auf meinen Fall anpassen muss, dass es funktioniert?
2. Problem:
Wie muss ich es handhaben, wenn ich mehrere Variablen gleichzeitig einsetzen will?
Konkret:
Ich möchte die Zelle B4 ebenfalls teilweise als Variable definieren und habe den Code wie folgt geändert:
Sub Werte_kopieren()
Dim i As Long
Dim j As Long
For i = 5 To 11
For j = 2 To 8
If Worksheets("Tabelle2").Cells(8, i) = "" Then
Next i
Else
Worksheets("Tabelle1").Cells(4, j) = Worksheets("Tabelle2").Cells(7, i)
End If
Next i
Next j
End Sub
Meinem Verständis nach, prüft das Makro nun, ob die Zelle E8 einen Inhalt hat. Ist dies nicht der Fall, springt es weiter auf F8 und prüft wieder ob die Zelle leer ist.
Angenommen in F8 befindet sich nun ein "x", kopiert er mir die Zelle F7 nach B4. Anschließend springt er sowohl mit der Varialbe "i", als auch "j" eins nach oben und beginnt wieder von vorne.
In der Realität bekomme ich jetzt von Excel allerdings einen "Next ohne For" Fehler. Alle Versuche meinerseits diesen zu beheben sind fehlgeschlagen. Kann mir jemand erklären, wie ich in einer "If" Bedingungen mehrere Variablen verschachtele, bzw. diese richtig (und auch unabhängig voneinander) hoch zähle?
Ich sage schon mal herzlichen Dank für jeden Ratschlag!
Viele Grüße
Sebbo