Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1336to1340
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

Rätsel bei Transpose

Rätsel bei Transpose
18.11.2013 08:34:40
Gregor
Hallo zusammen
Ich benutze folgenden Code:
Sub Shape()
Dim n As Double
Dim Zähler As Double
Dim arrFind()
Dim rZelle As Range
Dim sFundst As String
Zähler = 0
Wert = ActiveSheet.Shapes(Application.Caller).Name
With Worksheets("Muster")
Set rZelle = .Columns(1).Find(What:="Linie", LookAt:=xlPart, LookIn:=xlValues)
If Not rZelle Is Nothing Then
sFundst = rZelle.Address
Do
If .Cells(rZelle.Row, 12).Value Like "*" & Wert & "*" Then
n = n + 1
ReDim Preserve arrFind(1 To 5, 1 To n)
arrFind(1, n) = "*) " & .Cells(rZelle.Row, 12)
arrFind(2, n) = .Cells(rZelle.Row, 3)
arrFind(3, n) = .Cells(rZelle.Row, 13)
arrFind(4, n) = .Cells(rZelle.Row, 14)
arrFind(5, n) = .Cells(rZelle.Row, 15)
Zähler = Zähler + 1
End If
Set rZelle = .Columns(1).FindNext(rZelle)
Loop While Not rZelle Is Nothing And rZelle.Address  sFundst
End If
If n = 0 And Zähler = 0 Then
MsgBox Prompt:="Keine Einträge gefunden" _
& vbNewLine & vbNewLine, _
Title:="    Mitteilung an " & Application.UserName
End
End If
End With
With usrSuchen_Projekt.lstFind
.ColumnCount = 5
.List = Application.Transpose(arrFind)
End With
usrSuchen_Projekt.Show
Erase arrFind
End Sub
Der primäre Suchbegriff "Linie" in Spalte 1 kommt mehrmals vor. Bei gewissen variablen Begriffe "Wert" werden die gefundenen Einträge in Spalte 12 in der Liste usrSuchen_Projekt.lstFind mit Application.Transpose(arrFind) korrekt aufgelistet, bei anderen nicht. Der Grund, weshalb bei gewissen "Werte" die eingelesenen Einträge nicht aufgelistet werden, das heisst die Liste vollständig leer bleibt, ist mir ein Rätsel. Bei der Abfrage in Einzelschritten fällt mir auf, dass arrFind immer richtig eingelesen, aber mit Application.Transpose(arrFind) nicht übertragen wird. Entweder wird alles korrekt aufgelistet oder die Liste bleibt vollständig leer (je nach Wert immer das gleiche Verhalten).
Woran kann das liegen und wie kann ich das richtigstellen?
Vielen Dank und Gruss
Gregor

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
meine Glaskugel sagt mir ...
18.11.2013 10:45:49
Rudi
Hallo,
dass in den Fällen n=1 ist.
Damit ergibt Transpose(arrFind(1 to 5, 1 to 1) = arrFind(1 to 5), also ein 1-dimensionales Array.
Deshalb benutze ich oft ein zweites Array und Transponiere die Werte per Doppelschleife.
Das ist zwar mehr Code aber
1. nicht langsamer
2. übersichtlicher
3. funktioniert auch bei mehr als 65536 Datensätzen.
Bsp.:
ReDim arrList(1 To n, 1 To 5)
For i = 1 To 5
For j = 1 To n
arrList(j, i) = arrFind(i, j)
Next
Next
With usrSuchen_Projekt.lstFind
.ColumnCount = 5
.List = arrList
End With

Gruß
Rudi

Anzeige
mit lstFind.Column ...
18.11.2013 10:54:14
Rudi
Hallo,
brauchst du nicht zu transponieren.
With usrSuchen_Projekt.lstFind
.ColumnCount = 5
.Column = arrFind
End With
Gruß
Rudi

AW: mit lstFind.Column ...
18.11.2013 11:28:31
Gregor
Hallo Rudi
Mit
.Column = arrFind
funktinierts wunderbar, besten Dank.
Ich verstehe es zwar nicht, aber Hautsache, ich komme zum richtigen Ergebnis.
Viele Grüsse
Gregor

AW: mit lstFind.Column ...
18.11.2013 11:57:31
Luschi
Hallo Gregor,
in der Excel-Vba-Hilfe steht, das bei der Verwendung von '.Column() = arrFind' Spalten und Zeilen des Arras durch Vba automatisch vertauscht (also transponiert) werden.
Vielleicht ist es aber auch einen Unterschied, ob man
'Application.Transpose' oder
'Application.WorksheetFunction.Transpose' verwendet; wer weiß.
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige