Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Steuerelement per Variable ansprechen

Forumthread: Steuerelement per Variable ansprechen

Steuerelement per Variable ansprechen
25.06.2017 16:58:18
Powderk
Hallo
Ich bin gerade dabei eine Einteilungsliste via Drag und Drop zu Programmiren. Da ihr mir dabei bereits schon einmal super geholfen habt, hoffe ich ein weiteres mal aus eure Hilfe. Die Grundfunktionen in meiner Programmierung funktionieren bereits einwandfrei, das heißt ich kann per Drag und Drop ein Element in eine andere Liste verschieben und dabei vertauschen. Um das ganze jetzt auf eine Liste mit ca. 30 Einträgen zu erweitern möchte ich nun gerne ein Steuerelement via Variable ansprechen.

Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As  _
Integer, Shift As Integer, x As Single, y As Single)
If Not DragSource Is ListView1 Then
' Eintrag Auslesen
If Data.GetFormat(ccCFText) Then
ListView1.ListItems.Add , , Data.GetData(ccCFText)
' Einträge Tauschen
'2>1
If Right(Me.Selected(0).Name, 1) = 2 Then
ListView2.ListItems.Add , , ListView1.ListItems(1)
ListView1.ListItems.Remove (1)
ListView2.ListItems.Remove (1)
End If
'3>1
If Right(Me.Selected(0).Name, 1) = 3 Then
ListView3.ListItems.Add , , ListView1.ListItems(1)
ListView1.ListItems.Remove (1)
ListView3.ListItems.Remove (1)
End If
'4>1
If Right(Me.Selected(0).Name, 1) = 4 Then
ListView4.ListItems.Add , , ListView1.ListItems(1)
ListView1.ListItems.Remove (1)
ListView4.ListItems.Remove (1)
End If
End If
End If
End Sub

Also anstatt "ListView1.ListItems" -> "ListView(var).ListItems"
Somit erspare ich mir bei der Erweiterung aus ca. 30 Listen viel Schreibarbeit.
Ich hoffe ich habe mich verständlich ausdrücken können.
https://www.herber.de/bbs/user/114462.xls
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Steuerelement per Variable ansprechen
25.06.2017 18:33:38
Nepumuk
Hallo,
so:
Controls("ListView" & CStr(var)).ListItems

Wobei ich jetzt davon ausgegangen bin dass var eine numerische Variable ist.
Gruß
Nepumuk
AW: Steuerelement per Variable ansprechen
25.06.2017 21:18:48
Powderk
Super vielen Dank hat funktioniert.
Noch mal eine andere Frage. Gibt es eine Möglichkeit während des Drag und drop Vorganges die Hintergrundfarbe in der Ziel Liste zu ändern quasi als visuelle Unterstützung welches Ziel gerade ausgewählt ist. Ähnlich einen mousehover Effekt?
;
Anzeige

Infobox / Tutorial

Steuerelement per Variable ansprechen in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Steuerelement in Excel VBA per Variable anzusprechen, kannst Du die folgende Methode verwenden. Dies ist besonders nützlich, wenn Du mehrere Steuerelemente hast, wie beispielsweise in einer Drag-and-Drop-Anwendung.

  1. Erstelle eine Variable: Definiere eine numerische Variable, die den Index des Steuerelements speichert.

    Dim var As Integer
  2. Zugriff auf das Steuerelement: Nutze die Controls-Methode, um auf das Steuerelement zuzugreifen.

    Controls("ListView" & CStr(var)).ListItems
  3. Drag-and-Drop-Logik implementieren: Verwende die oben genannte Logik in deiner OLEDragDrop-Subroutine, um Einträge zwischen Listen zu verschieben.

  4. Visual Feedback hinzufügen: Um während des Drag-and-Drop-Vorgangs die Hintergrundfarbe der Ziel-Liste zu ändern, kannst Du die BackColor-Eigenschaft des Steuerelements anpassen.


Häufige Fehler und Lösungen

  • Fehler: Die Variable wird nicht erkannt.

    • Lösung: Stelle sicher, dass die Variable korrekt deklariert und initialisiert ist.
  • Fehler: ListView wird nicht gefunden.

    • Lösung: Überprüfe, ob die Steuerelemente korrekt benannt sind und ob der Index innerhalb der Grenzen liegt.
  • Fehler: Drag-and-Drop funktioniert nicht.

    • Lösung: Stelle sicher, dass das Drag-and-Drop-Ereignis korrekt implementiert ist und die Datenformate übereinstimmen.

Alternative Methoden

Eine alternative Methode besteht darin, die Steuerelemente in einer Collection oder einem Array zu speichern. So kannst Du einfacher auf die einzelnen Elemente zugreifen, ohne mehrfache Controls-Aufrufe zu machen.

Dim ListViews As Collection
Set ListViews = New Collection

ListViews.Add ListView1
ListViews.Add ListView2
ListViews.Add ListView3

Um auf ein ListView zuzugreifen, kannst Du dann einfach auf die Collection zugreifen:

ListViews(var).ListItems

Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie Du die Hintergrundfarbe während des Drag-and-Drop-Vorgangs ändern kannst:

Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    If Not DragSource Is ListView1 Then
        ' Hintergrundfarbe ändern
        ListView2.BackColor = RGB(200, 200, 255) ' Beispiel für eine Ziel-Liste
        ' Drag-and-Drop-Logik hier einfügen
    End If
End Sub

Tipps für Profis

  • Nutze Konstanten: Verwende Konstanten für die Farbcodes und Steuerelementnamen, um den Code lesbarer zu machen.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler während der Ausführung zu vermeiden.

  • Performance: Achte darauf, dass Du nur die notwendigen Steuerelemente aktualisierst, um die Performance Deiner Anwendung zu optimieren.


FAQ: Häufige Fragen

1. Wie kann ich mehrere ListViews gleichzeitig ansprechen? Du kannst eine Schleife verwenden, um über die Indizes der ListViews zu iterieren und so auf mehrere Steuerelemente zuzugreifen.

2. Ist es möglich, die Drag-and-Drop-Funktionalität in Excel für Mac zu nutzen? Die Drag-and-Drop-Funktionalität ist in Excel für Mac eingeschränkt. Stelle sicher, dass Du Deine Anwendung auf Windows testen kannst, um die besten Ergebnisse zu erzielen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige