Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Alle gefüllten Spalten mit Variabler durchlaufen

Betrifft: Alle gefüllten Spalten mit Variabler durchlaufen von: Stefanie
Geschrieben am: 05.08.2014 15:27:23

Hallo ihr VBA Profis,

möchte mich zunächst für dieses Klasse Forum bedanken, was mir schon oft weitergeholfen hat!

Meine Frage:

Ich möchte gerne alle Spalten (B4-EJ49) in meiner Tabelle durch gehen. Wenn in einer Spalte ein 'x' gefunden wird soll sich das Makro die Spalte merken, da ich dann aus dieser Spalte aber andere Zeile etwas kopieren möchte.

Mein Problem: wie kann ich mir die Spalte merken, in der das x gefunden wurde?

Mein Code:

For Each Zelle_Z In Range("B4:EJ49")
Worksheets(ArbBlatt).Select
If Zelle_Z.Value = "x" Then
Merke dir die Spalte
Und kopiere aus der gefunden Spalte aus Zelle 3 etwas
End if
Next Zelle_Z

Ich hoffe ich habe mein Problem verständlich ausgedrückt und freue mich über eure Hilfe.

Viele Grüße
Stefanie

  

Betrifft: Alle gefüllten Spalten mit Variabler durchlaufen von: Hajo_Zi
Geschrieben am: 05.08.2014 15:33:29

Hallo Stefanie,

Option Explicit

Sub Schleife()
    Dim Zelle_Z As Range
    Dim ArbBlatt As String
    ArbBlatt = ActiveSheet.Name
    With Worksheets(ArbBlatt)
        For Each Zelle_Z In .Range("B4:EJ49")
            If Zelle_Z.Value = "x" Then
                MsgBox Zelle_Z.Column
                'Merke dir die Spalte
                'Und kopiere aus der gefunden Spalte aus Zelle 3 etwas
            End If
        Next Zelle_Z
    End With
End Sub
GrußformelHomepage


  

Betrifft: AW: Alle gefüllten Spalten mit Variabler durchlaufen von: Stefanie
Geschrieben am: 06.08.2014 07:24:46

Danke so sieht der Quellcode natürlich besser aus :-) hab mein Problem nochmal an einem Beispiel erläutert. Hoffe ihr könnt mir helfen, würde mich freuen bis dahin tüftel ich weiter ;-)

Viele Grüße


  

Betrifft: Alle gefüllten Spalten mit Variabler durchlaufen von: Hajo_Zi
Geschrieben am: 06.08.2014 07:59:48

Gut, Du möchtest mir das also nicht zeigen. Ich bin dann raus.

Gruß Hajo


  

Betrifft: AW: Alle gefüllten Spalten mit Variabler durchlaufen von: Stefanie
Geschrieben am: 06.08.2014 08:09:08

Entschuldige was zeigen?


  

Betrifft: AW: Alle gefüllten Spalten mit Variabler durchlaufen von: Stefanie
Geschrieben am: 06.08.2014 08:10:56

Meinst du das Beispiel? Natürlich :-)

Zitat:

Tabellenblatt ArbBlatt:

------A--------B-----------C ....
-----Text1----Text 2-----Text 3
G1-----x------------------ x
G2-------------x------------
G3-----x------ x-----------x

Mein Makro sucht in einem anderen Arbeitsblatt G1. Nun wechselt es in dieses Arbeitsblatt und findet hier auch die Zelle G1. So weit bin ich. Nun sollte es so weiter gehen:

Finde alle 'x' in der Zeile von G1 (im Beispiel in der Spalte A und C)
Wenn ein 'x' gefunden wurde dann kopiere in der Spalte (z.B. A) den Text 1 in ein anderes Tabellenblatt z.B. ZielArbBlatt in Spalte M4.

Ich hoffe so ist es verständlicher.


  

Betrifft: Kopieren wohin? von: EtoPHG
Geschrieben am: 05.08.2014 15:38:30

Hallo Stefanie,

Einige Anmerkungen:
1. Warum willst du jede Zelle im Bereich überprüfen? Das kann man mit Zählenwenn viel schneller prüfen.
2. Spalte / Zeile / Zelle : Sei konsistenter in der Begriffswahl. Ich nehme an, wenn in einer Spalte in den Zeilen 4:49 ein "x" vorkommt soll die Zeile 3 aus dieser Spalte irgendwohin
3. kopiert werden, aber wohin?
4. Dein VBA Code referenziert den Bereich im aktiven Tabellenblatt, da nützt ein nachträglicher .Select eines anderen Blatts gar nicht. Das .Select/.Activate meist überflüssige Befehle in VBA sind, kannst du in diesem Forum in Tausenden von Beiträgen lesen.

Warum VBA? Und nicht einfach eine Formel [Ansatz: =WENN(ZÄHLENWENN(A4:A49;"x")>1;INDEX(A:A;3);"")] in die erste Zielzelle und dann die Formel kopieren.

Gruess Hansueli


  

Betrifft: AW: Kopieren wohin? von: Stefanie
Geschrieben am: 06.08.2014 07:22:00

Vielen Dank für die schnelle Antwort!

Ich möchte dies gerne in einem größeren Makro Projekt unterbringen, deswegen muss ich dies per VBA umsetzen.

Entschuldige bitte ich versuche es an einem Beispiel besser zu beschreiben!

Tabellenblatt ArbBlatt:

------A--------B-----------C ....
-----Text1----Text 2-----Text 3
G1-----x------------------ x
G2-------------x------------
G3-----x------ x-----------x

Mein Makro sucht in einem anderen Arbeitsblatt G1. Nun wechselt es in dieses Arbeitsblatt und findet hier auch die Zelle G1. So weit bin ich. Nun sollte es so weiter gehen:

Finde alle 'x' in der Zeile von G1 (im Beispiel in der Spalte A und C)
Wenn ein 'x' gefunden wurde dann kopiere in der Spalte (z.B. A) den Text 1 in ein anderes Tabellenblatt z.B. ZielArbBlatt in Spalte M4.

Ich hoffe so ist es verständlicher.
Ich muss mir halt die Spalte merken irgendwie, in der das x steht um den Text aus der Spalte zu kopieren :-(

Freue mich über eure Hilfe!


  

Betrifft: Deine Ausführungen in Ehren... von: EtoPHG
Geschrieben am: 06.08.2014 15:58:09

Stefanie,

Beim besten Willen, kann ich dir keinen Codevorschlag aufgrund deiner Ausführungen machen.
Vielleicht genügt ja Hajo's Vorschlag. Allerdings bezweifle ich das, beim angegebenen Level.
Zum Einsteigen ins VBA Programmieren eignet sich der Makrorekorder, aber nachher das Anwenden der Tipps dieses Artikels (wobei empfohlen ist, diesen sich schon vorher zu Gemüte zu führen).

Gruess Hansueli


 

Beiträge aus den Excel-Beispielen zum Thema "Alle gefüllten Spalten mit Variabler durchlaufen"