Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
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

Inhalt mehrerer Zellen als Variable speichern und

Inhalt mehrerer Zellen als Variable speichern und
09.10.2017 13:21:04
reiner
Hallo Leute,
die Inhalte mehrerer nebeneinanderliegender Zellen sollen in einer Variablen gespeichert werden, danach werden die Zellinhalte mit neuen Daten überschrieben.
Sollte sich jedoch herausstellen dass die zuvor überschriebenen Zellen in einer anderen Zeile in der gleichen Reihenfolge benötigt werden, sollten die Inhalte der Variablen in die neue Zeile eingefügt werden und den gleichen Zellbereich wie zuvor belegen.
Es ist mir zwar möglich den Inhalt mehrerer Zellen in einer Variablen zu speichern, aber durch welches Trennzeichen müssen die einzelnen Zellwerte voneinander getrennt sein damit sie bei Bedarf in der gleichen Reihenfolge eingefügt werden?
ist das überhaupt möglich?
mfg
reiner

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt mehrerer Zellen als Variable speichern und
09.10.2017 13:34:21
yummi
Hallo reiner,
speichere dir die Inhalte der Zellen in einem array, dann kannst du bei Bedarf die einzelnen elemente des Arrays (welche jeweils eine Zelleninhalt entsprechen) zurückschreiben.
Ansonsten musst du dir selber ein Trennzeichen definieren (was nicht als Zellinhalt vorkommen darf) und das jeweils, nachdem du eine Zelle in deine Variable gespeichert hast, anhängen. Mit Split kannst du das ganze dan wieder bei Bedarf aufteilen.
Gruß
yummi
AW: Inhalt mehrerer Zellen als Variable speichern und
09.10.2017 13:57:33
reiner
hallo yummi,
danke für die Rückmeldung, aber so ganz kann ich dir nicht folgen.
Würdest du mir bitte anhand eines Beispiels zeigen wie du den jeweiligen Inhalt von Zelle "A1", "B1" und "C1" speicherst (möglichst als Variable, da ich zu wenig Erfahrung mit Arrays habe) sodass ich diese Variable in einer beliebigen Zeile erneut einfügen kann und die 3 nebeneinander liegenden Zellen den Inhalt enthalten wie ursprünglich in Zeile 1?
Wie müsste der VBA-Code aussehen?
mfg
reiner
Anzeige
AW: Inhalt mehrerer Zellen als Variable speichern und
09.10.2017 14:47:24
yummi
Hallo reiner,
hier mal ein kleines Bespiel, wen ndu in A1:A3 Werte hast. Die werden dan nach D1:D3 kopiert, kannst Du aber durch den Aufruf steuern.

Option Explicit
Sub test()
Dim var As String
Dim wks As Worksheet
Dim wkb As Workbook
Set wkb = ThisWorkbook
Set wks = wkb.Sheets("Tabelle1")
var = SpeichereZellen(wks, "A1:C1")
Call LadeZelle(wks, "D1:D3", var)
End Sub
Function SpeichereZellen(ByVal wks As Worksheet, ByVal rngstr As String) As String
Dim Retstr As String
Dim rng As Range
Dim Zelle As Object
Set rng = wks.Range(rngstr)
For Each Zelle In rng
Retstr = Retstr & Zelle.Value & ","
Next
SpeichereZellen = Left(Retstr, Len(Retstr) - 1)
End Function
Function LadeZelle(ByVal wks As Worksheet, ByVal rngstr As String, ByVal strMerke As String)
Dim rng As Range
Dim Zelle As Object
Dim arr() As String
Dim i As Integer
arr = Split(strMerke, ",")
Set rng = wks.Range(rngstr)
i = 0
For Each Zelle In rng
If i 
Gruß
yummi
Anzeige
AW: Inhalt mehrerer Zellen als Variable speichern und
09.10.2017 15:22:47
reiner
hallo yummi,
funktioniert super, aber ich verstehe nicht warum in der Funktion "LadeZelle..." die Variable "var" nicht mehr enthalten ist, dafür eine Variable "arr()"
geht das nicht auch einfacher?
mfg
reiner
AW: Inhalt mehrerer Zellen als Variable speichern und
09.10.2017 15:29:42
yummi
Hallo reiner,
dadurch das das array verwendet wird, kannst du die vba routine split benutzen, die dir einen String in Teilstrings aufteilt und diese dann in einem array liefert.
Du kannst natürlich auch bei der String Variablen var bleiben, nach einem "," suchen dan nmit mid den string ausscheiden, in die zelle schreiben und dann in der Variable var das nächste komma suchen und wieder ausschniden und speichern. Das sit das was split für dich übernimmt, nur eben liefert es dir ein Array (weil niemand zum Zeitpunkt des Programmierens weiß wiviel Elemente in deienm String drin sind.
Es geht beides, aber ob das andere wirklich einfacher ist, lass ich jetzt mal so dahingestellt.
Schau dir im debugger die einzelnen variablen an und versuch es zu verstehen.
Ansonsten braucht du Instr um das komma zu finden und Mid mit anfang und endposition zum ausschneiden, kannst du gern ausprobieren (einen lerneffekt hast du dabei auf jedenfall).
Gruß
yummi
Anzeige
AW: Inhalt mehrerer Zellen als Variable speichern und
09.10.2017 15:28:26
Christian
Hallo Reiner,
yummi hat dir ja bereits einen ausgefuchsten Code geliefert!
Wenn du in Sachen Array noch ein bisschen was lernen möchtest, kann ich dir diesen Artikel empfehlen:
https://excelmacromastery.com/excel-vba-array/
Ich habe hier noch eine simplere Umsetzung für dich.
Option Explicit
Sub BspArray()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Tabelle1")
' myArray als Variable vom Typ Variant deklarieren
' Werte aus Range() dem Array zuweisen
Dim myArray As Variant
myArray = ws.Range("A1:C1").Value
' Daten wieder einfügen
' Dafür muss der Bereich (Range) die gleiche Größe und Anordnung wie das Array haben.
' hier wird die Größe des Zielbereiches dynamisch ermittelt.
' Daten horizontal einfügen
ws.Range("A4").Resize(UBound(myArray, 1), UBound(myArray, 2)) = myArray
' Daten vertikal einfügen
ws.Range("A10").Resize(UBound(myArray, 2), UBound(myArray, 1)) = Application. _
WorksheetFunction.Transpose(myArray)
End Sub
VG, Christian
Anzeige
hallo Christian und yummi
09.10.2017 16:20:41
reiner
Der Lösungsvorschlag von yummi wirkt aus meiner Sicht sehr professionell,
aber Christians Vorschlag ist für mich eher nachvollziehbar und verständlicher; ist für meine Anwendung ausreichend
vielen Dank euch beiden
reiner

9 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige