Wie benutze ich die for...each Anweisung, so daß er in Zelle("A1") sämtliche Daten hintereinander weg aus dem makierten Bereich schreibt.
Sorry für die blöde Frage, muss erst mal bei FOR...EACH hintersteigen :-)
ich bin zwar ein absoluter VBA-Stümper, aber folgender Code funktioniert:
Sub verketten()
For Each zelle In Selection
a = a & zelle.Value
Next
Range("a1").Select
ActiveCell.Value = a
End Sub
Vorher musst du halt einen Bereich markieren.
Das Ergebnis wird in A1 ausgegeben.
Die VBAler unter uns: Bitte nicht lachen...
Gruß Boris
Ich weiß garnicht warum du dich entschuldigst?
Ich pers. finde das Super, das Du versuchst (Um dich zu zitieren:"VBA-Stümper")anderen zu helfen und es hat ja wunderbar gefruchtet.
Ich selber bin auch ein VBA-Stümper und brauch z.Z. leider noch mehr Hilfe als ich selber geben kann, aber was nicht ist, kann ja noch werden...Hoffe ich zumindest!
Sorry, musste ich unbedingt loswerden!
Gruss Ralf K.
Um in Excel mit VBA die markierten Zellen auszulesen und deren Werte in eine bestimmte Zelle zu schreiben, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:
Öffne den VBA-Editor: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
Erstelle ein neues Modul: Rechtsklicke im Projekt-Explorer auf "VBAProject (DeineDatei.xlsx)" > Einfügen
> Modul
.
Füge den folgenden Code ein:
Sub verketten()
Dim zelle As Range
Dim a As String
a = ""
For Each zelle In Selection
a = a & zelle.Value
Next
Range("A1").Value = a
End Sub
Schließe den VBA-Editor: Drücke ALT + Q
oder schließe das Fenster.
Markiere den gewünschten Bereich in Deinem Arbeitsblatt.
Führe das Makro aus: Gehe zu Entwicklertools
> Makros
> wähle verketten
und klicke auf Ausführen
.
Jetzt werden alle Werte der markierten Zellen in die Zelle A1 geschrieben.
Fehler: "Objekt erforderlich"
Fehler: Zelle A1 bleibt leer
Eine weitere Methode, um die ausgewählten Zellen auszulesen, besteht darin, die Daten in eine Liste oder ein Array zu schreiben. Hier ein Beispiel:
Sub arrayAuslesen()
Dim zelle As Range
Dim werte() As Variant
Dim i As Integer
ReDim werte(1 To Selection.Count)
i = 1
For Each zelle In Selection
werte(i) = zelle.Value
i = i + 1
Next
' Beispiel: Werte in A1 bis A(n) ausgeben
For i = LBound(werte) To UBound(werte)
Cells(i, 1).Value = werte(i)
Next
End Sub
Beispiel 1: Wenn Du die Werte aus den Zellen B1 bis B5 zusammenfassen und in C1 schreiben möchtest, markiere einfach die Zellen B1 bis B5 und führe das erste Makro aus. Die Ergebnisse erscheinen in C1.
Beispiel 2: Mit dem Array-Beispiel kannst Du die Werte nicht nur in eine Zelle, sondern in eine gesamte Spalte ausgeben. Dies ist nützlich, wenn Du Daten strukturierter darstellen möchtest.
Verwende Trim()
: Wenn Du sicherstellen möchtest, dass keine überflüssigen Leerzeichen in den Werten enthalten sind, kannst Du Trim(zelle.Value)
verwenden.
Fehlerbehandlung implementieren: Ergänze Deinen Code mit Fehlerbehandlungsroutinen, um auf unerwartete Eingaben zu reagieren.
Variablen deklarieren: Achte darauf, alle Variablen korrekt zu deklarieren, um den Code lesbarer und weniger fehleranfällig zu machen.
1. Wie kann ich die markierten Zellen in eine andere Zelle als A1 schreiben?
Du kannst die Zeile Range("A1").Value = a
anpassen, indem Du die gewünschte Zielzelle angibst, z.B. Range("B1").Value = a
.
2. Funktioniert dieser Code in allen Excel-Versionen? Ja, dieser Code ist mit allen modernen Excel-Versionen kompatibel, die die VBA-Programmierung unterstützen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen