Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

MultiSelect, Auswahl auf 1 beschränken..?

Betrifft: MultiSelect, Auswahl auf 1 beschränken..? von: Dieter.K
Geschrieben am: 28.08.2004 00:02:20

Hallo Forum,

könnt Ihr mir helfen?
Ich benutze folgenden Code um einen Suchbegriff (über eine ComboBox) auszuwählen. Wenn dieser Suchbegriff mehrfach vorkommt (in diesem Fall der Name meines Kunden), werden sämtliche Zeilen mit dem Suchbegriff markiert. Ich möchte jedoch nur die tatsächlich ausgewählte Zeile markieren, da diese dann in ein anderes Tabellenblatt verschoben werden soll.


Sub MultiSelect2()
   Dim wks As Worksheet
   Dim rngFind As Range, rngRows As Range
   Dim sFind As String, sSearch As String
   sSearch = ComboBox11
   Set rngFind = Cells.Find(sSearch)
   If rngRows Is Nothing Then
      Set rngRows = rngFind
   End If
   If Not rngFind Is Nothing Then
      sFind = rngFind.Address
      Do
         Set rngRows = Application.Union(rngRows, rngFind.EntireRow)
         Set rngFind = Cells.FindNext(After:=rngFind)
         If rngFind.Address = sFind Then Exit Do
      Loop
   End If
   rngRows.Select
End Sub



Beispiel:
Name "Müller" kommt insgesamt 3x vor. Zu jedem Eintrag gehört allerdings ein anderes Angebot. Wenn ich nun über den Namen "Müller" (über eine ComboBox) suche, möchte ich nur die Zeile mit dem Angebot "B" markieren und in ein anderes Tabellenblatt verschieben.

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt und Ihr versteht was ich meine.


Danke für Eure Anregungen / Hilfen.


Gruß
Dieter.K
  


Betrifft: AW: MultiSelect, Auswahl auf 1 beschränken..? von: Christoph M
Geschrieben am: 28.08.2004 11:02:47

Hallo Dieter,

so ganz bin ich da nicht durchgestiegen...

hier ein Bsp wenn sich die Combobox in der selben Tabelle befindet wie deine Daten.
Gruß
Christoph
PS: wenn du die Zeile kopieren willst, dann kopier direkt und spar dir das "Select"

Option Explicit

Private Sub ComboBox1_Change()
Me.Rows(Me.ComboBox1.ListIndex + 1).Select
End Sub



  


Betrifft: AW: MultiSelect, Auswahl auf 1 beschränken..? von: Dieter.K
Geschrieben am: 28.08.2004 13:03:54

Hallo Christoph,

Dein Code funktioniert, wenn ich diesen wie folgt ändere:

Private Sub ComboBox1_Change()
Rows(Me.ComboBox1.ListIndex + 2).Select
End Sub


(ListIndex + 2, da ich eine Überschrift in der Tabelle habe) (denke ich zumindest, daß ich deshalb den Wert auf +2 ändern mußte). Warum es nur funktioniert wenn ich das "Me." vor "Rows" entferne, weiß ich allerdings nicht.

Nochmal zum Hintergund, damit die Sache vielleicht deutlicher wird:

In einer UF werden Angebote eingetragen. Die Daten des Kunden kommen aus einer anderen Tabelle. Jetzt ist es möglich, das zu einem Kunden mehrere Angebote eingetragen wurden.
Nun will ich aus einem Angebot einen Auftrag machen, d.h. ein Angebot aus dem Tabellenblatt "Angebote" ausschneiden und ins Tabellenblatt Aufträge einfügen. Suche ich nun über eine Combobox nach dem Kundennamen, so taucht dieser mehrfach auf, da die Suche über das Blatt "Angebote" erfolgt. Wähle ich nun einen Kundennamen aus, werden mir hierzu sämtliche Angebotsdaten eines bestimmten Angebotes angezeigt. Und genau diese Zeile möchte ich markieren und ausschneiden.

Dank Deiner Hilfe funktioniert es jetzt einwandfrei. Den ganzen Aufwand mit meinem "MultiSelect"-Code kann ich mir nun schenken. Dein Code funktioniert und ist viel kürzer.


Danke nochmals.

Gruß
Dieter.K


  


Betrifft: Danke für die Rückmeldung... von: Christoph M
Geschrieben am: 28.08.2004 13:32:53

Hallo Dieter,
mag sein, das '97 das "Me" für die Tabelle (das Objekt "Tabelle") noch nicht kennt.
Statt dem "Me" könntest du aber z.B. "Sheets("Tabelle1").Rows...." schreiben
Das selbe gilt für das "Me" vor ComboBox.

Deine Vermutung bezgl der "+1" bzw. "+2" ist richtig. Der Listindex einer ComboBox (genauso ListBox) beginnt bei 0. Da es die Zeile 0 nicht gibt, muss also mindestens um eins erhöht werden.

Gruß
Christoph


 

Beiträge aus den Excel-Beispielen zum Thema "MultiSelect, Auswahl auf 1 beschränken..?"