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

Frage eines Neulings: Spalte/Zeilen Bereiche

Frage eines Neulings: Spalte/Zeilen Bereiche
27.01.2017 07:42:04
Frederik
Hallo, wie erwähnt bin ich noch nicht so lang mit VBA vertraut, ich bitte also um Nachsicht ^^. Ich habe ein kleines Programm geschrieben, was grundsätzlich auch so funktioniert wie es soll, nämlich, dass ein Item A1 aus einem Bereich mit einem anderen Item B1 verknüpft wird, und dann zum nächsten und zu allen weiteren "Paaren" übergeht, solang die Bedingung erfüllt ist, um sie schließlich kommagetrennt in der Zelle auszugeben. Am Beispiel:
SpalteA:[A,B,C,D]
SpalteB:[1,2,3,4]
Ergebnis: [A1,B2;C3,C4]
Allerdings funktioniert das Programm nicht für Zeilenbereiche, sondern nur für Spalten. Was ist der Trick dabei, um es für beide Möglichkeiten anwendbar zu machen? Hier ist das Programm:

Public Function KreuzVerketten(Auspraegung As Range, Attribut As Range) As String
Dim i As Integer
Dim mydic As Object
Set mydic = CreateObject("Scripting.Dictionary")
TUP = Attribut
For i = 1 To Auspraegung.Count
If Len(Auspraegung.Item(i)) = 1 Then
mydic(TUP(i, 1)) = Attribut.Item(i) & Auspraegung.Item(i)
End If
Next i
KreuzVerketten = Join(mydic.items, ",")
End Function

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage eines Neulings: Spalte/Zeilen Bereiche
27.01.2017 08:32:28
ChrisL
Hi Frederik
Und wie beim letzten mal funktioniert dein Beispiel (mit zwei Spalten):
SpalteA:[A,B,C,D]
SpalteB:[1,2,3,4]
Ergebnis: [A1,B2;C3,C4]
Ausser dass du Buchstabe und Zahl vertauscht hast.
Was hingegen nicht geht ist:
Sub t()
MsgBox KreuzVerketten(Range("A1:B2"), Range("C1:D2"))
End Sub
Weil TUP ist ein Array welches auf "2" dimensioniert wird. Wenn du dann den 3. Wert übergibst ist aus die Maus.
Allerdings ist TUP sowieso überflüssig:
Public Function KreuzVerketten(Auspraegung As Range, Attribut As Range) As String
Dim i As Integer
Dim mydic As Object
Set mydic = CreateObject("Scripting.Dictionary")
For i = 1 To Auspraegung.Count
If Len(Auspraegung.Item(i)) = 1 Then
mydic(i) = CStr(Attribut.Item(i) & Auspraegung.Item(i))
End If
Next i
KreuzVerketten = Join(mydic.items, ",")
End Function

cu
Chris
Anzeige
AW: Frage eines Neulings: Spalte/Zeilen Bereiche
27.01.2017 08:55:22
Frederik
Ich wusste es hängt irgendwie mit den Dimensionen zusammen... Danke, danke, danke! Das hat mir sehr geholfen, um die grundsätzlich Arbeitsweise zu verstehen! (VBA ist meine erste Programmiersprache überhaupt)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige