Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1492to1496
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Schleife

VBA Schleife
24.05.2016 15:56:01
Michael
Hallo Forum,
wie könnte ich daraus eine Schleife machen?
Sheets("Sheets2").Range("A2") = Sheets("Sheet1").Range("A" & maxRow) _
& ";" & Sheets("Sheet1").Range("B" & maxRow) _
& ";" & Sheets("Sheet1").Range("C" & maxRow) _
& ";" & Sheets("Sheet1").Range("D" & maxRow) _
& ";" & Sheets("Sheet1").Range("E" & maxRow) _
& ";" & Sheets("Sheet1").Range("F" & maxRow) _
& ";" & Sheets("Sheet1").Range("G" & maxRow) _
& ";" & Sheets("Sheet1").Range("H" & maxRow) _
& ";" & Sheets("Sheet1").Range("I" & maxRow) _
& ";" & Sheets("Sheet1").Range("J" & maxRow) _
& ";" & Sheets("Sheet1").Range("K" & maxRow) _
& ";" & Sheets("Sheet1").Range("L" & maxRow) _
& ";" & Sheets("Sheet1").Range("M" & maxRow)
Gruß,
Michael

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife
24.05.2016 16:14:16
UweD
Hallo
so...

Sub dgdfgf()
Dim i As Integer
With Sheets("Sheet2")
.Cells(2, 1).ClearContents
For i = 1 To 13 ' 13=M
.Cells(2, 1) = .Cells(2, 1) & Sheets("Sheet1").Cells(2, i) & ";"
Next
.Cells(2, 1) = Left(.Cells(2, 1), Len(.Cells(2, 1)) - 1)
End With
End Sub

gruß UweD

AW: VBA Schleife
24.05.2016 16:31:10
Michael
Danke Uwe!

AW: VBA Schleife
24.05.2016 16:40:07
snb
Du brauchst keine:
Sheets("Sheets2").Range("A2").resize(,13)=sheets("sheet1").range("A20:M20").value

AW: VBA Schleife - Thema verfehlt.
24.05.2016 17:01:58
Daniel
Hi SNB
du solltet aufmerksamer die Fragestellung lesen.
Die Texte aus Spalte A-M sollen nicht 1:1 in die Spalten A-M übernommen werden, sondern sie sollen in eine Zelle (A2) zusammengefast werden!
Gruß Daniel

Anzeige
AW: VBA Schleife - Text zusammenfassen
24.05.2016 17:12:54
Daniel
Hi´
in diesem Speziellen Fall geht das Zusammenfassen auch ohne Schleife, nämlich über JOIN.
das ist hier möglich, weil die Zellen, die du zusammenfassen willst, lückenlos sind und die Reihenfolge nicht verändert wird:
With WorksheetFunction
Sheets(1).Range("A2").Value = Join(.Transpose(.Transpose(Sheets(1).Cells(maxrow, 1).Resize(1,  _
13).Value)), ";")
End With
warum muss hier 2x transponiert werden?
die JOIN-Funktion kann nur ein echtes eindimensionales Array zusammenfassen.
das erste .Value erzeugt aber ein zweidimensionales Array mit einer Zeile und vielen Spalte.
beim ersten Transpose wird daraus ein zweidimendionales Array mit einer Spalten und vielen Zeilen
beim zweiten Transpose wird dieses wieder zu einem zweidimensionalen Array mit einer Zeilen und vielen Spalten, aber jetzt ist VBA in der Lage, dieses als eindimensionales Array zu erkennen (beim .Value ist dies noch nicht möglich, hier ist das Array immer zweidimensional, auch wenn es nur eine Zeile hat)
Gruß Daniel

Anzeige
Im Prinzip richtige Darstellung, wenn auch ...
25.05.2016 02:03:10
Luc:-?
…etwas esoterisch angehaucht, Daniel:
…beim zweiten Transpose wird dieses wieder zu einem zweidimensionalen Array mit einer Zeile und vielen Spalten, aber jetzt ist VBA in der Lage, dieses als eindimensionales Array zu erkennen
Die XlFkt MTRANS (WorksheetFunction.Transpose) erzeugt grundsätzlich ein Datenfeld ohne ZellBezug. In VBA sind diese Daten­felder, sofern sie horizontal gerichtet sind, grdsätzlich 1dimensional und wdn bei allen Auto­Operationen auch so generiert. Wollte man das anders haben, müsste man es auch explizit so definieren. Nur vertikal gerichtete (Spalten-)Vektoren (sind und) bleiben auch bei Übernahme in ein Datenfeld 2dimensional. Allerdings bleiben dabei auch die ZellBezüge erhalten, die erst durch den Ein­satz von Transpose verloren gehen.
Das Ganze mag auch damit zusammen­hängen, dass ein Variant mit einem Array etwas anderes ist als ein Array vom Datentyp Variant. Sie sind sich aber bei horizontalen Vektoren am ähnlichsten, zumindest wdn ihre Elemente analog und damit ununter­scheidbar indiziert.
Da dieser (Variant-)Array-Typ stets 1dimensional ist, ist ein auf diese Weise begründeter Vektor auch vorzugsweise horizontal gerich­tet, ist also ein ZeilenVektor. Ein 1dimensionaler SpaltenVektor muss dagegen explizit erzeugt wdn, indem man den Ele­men­ten eines Vektors Vektoren aus je einem Element zuweist. Jeder dieser Vektoren ist dann 1dimensional, der HptVektor vertikal und die Element­Vektoren horizontal gerichtet, zB …
avTest = Array(Array(element1), Array(element2))
Dass es sich hierbei tatsächlich um einen 1dimensionalen vertikalen Vektor handelt, erkennt man bei Ausgabe in einen ZellBereich, wobei das Datenfeld noch in eine abbildbare Form gebracht wdn muss, was in einer SubProzedur wiederum mit 2× Transpose erfolgen kann, in einer UDF aber nicht nötig ist, wenn sie in einer ZellFml eingesetzt wird, denn dann besorgt das die Xl-Steuerung, zB hierbei …
Function vVarray(element1, element2): vVarray = Array(Array(element1), Array(element2)): End Function
Morrn, Luc :-?
Besser informiert mit …

Anzeige
AW: VBA Schleife
24.05.2016 17:31:33
snb

Sub M_snb()
[sheets2!A2]=Join([transpose(transpose(sheet1!A6:M6))], ";")
End Sub

AW: MaxRow?
24.05.2016 17:39:16
Daniel
Hi Snb
wie verwendet man bei deiner Methode die Variable MaxRow als Zeilennummer für die Quellzellen?
bei "VBA-Bescheiden" ist das vielleicht nicht jedem klar.
Gruß Daniel

AW: MaxRow?
24.05.2016 17:44:38
snb
oder
Sub M_snb()
[sheets2!A2]=Join(Application.Index([sheet1!A6:M6].Value, 1, 0), ";")
End Sub

AW: MaxRow?
24.05.2016 17:54:30
Daniel

Sub M_snb()
[sheets2!A2]=Join(Application.Index([sheet1!A6:M6].Value, 1, 0), ";")
End Sub

immer noch kein maxrow drind.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige