Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Daten auslesen mit Namen





Frage

Hallo zusammen Wie ich als fleissiger Besucher in eurem Supportnet mir vorstellen kann,wird meine Frage für euch kein Problem sein. Habe mir über euch schon viel zusammen gebastelt aber bei vielen Sachen bin ich mit meinem Latain am Ende. Wie heißt es bei uns in Bayern so schön da wären gelernte ja Deppen wenn wir das genauso könnten. Aber nun zu meiner Frage.Habe mir in meiner Nachkalkulationmappe mit 2 Tabellen (Nachkalkuiation und ein mit Material) ein Userform mit den Namen Material gebastelt mit 14 Buttons und 1 ComboBox.Nun möchte ich das es mir Daten von A2 bis J 2 in die ComboBox einliest wenn in E ein gewieser Name steht. Tabelle ist wie Folgt A......B...........C......D............E.............F......G.......H.......I....J Nr. Artikel Prei. Beh. Kategorie In Spalte E Stehen volgenden Name untereinander:Abdecken / Acryl / Boden / Farbe / Fassade / Gewebe / Hilfsmittel / Isolieren / Lack / Lasur / Schleifen / Spachteln / Verdünner / Werkzeuge. Es kann sein das noch einige Namen dazukommen. Und würde es gehen wenn ich in der ComboBox einen Datensatz neu schreibe das es mir die Daten in den Bereich wo er dazugehört darunter schreibt,also spalte E bereich Lack oder E bereich Lasur. Ach nochwas habe in Spalte A folgende Formel =WENN(ISTLEER(B78;"";A77+1) ich hoffe ich habe mich verständlich ausgedrückt. Viel Grüß Helmut

Antwort 1 von coros

Moin Helmut,

ich glaube, Du musst das wohl noch mal genauer erklären. Ich habe mir Deine Frage mehrfach durchgelesen und bin ehrlich gesagt bei jedem lesen nicht schlauer geworden. Ich vermute mal, dass das den anderen hier genauso geht, da ja noch niemand einen Versuch gestartet hat, Dir zu helfen.

Also, die Daten, die in die ComboBox eingelesen werden sollen stehen in dem Bereich A2:J2. Sollen die dann untereinander als je eine Auswahl in der ComboBox stehen?

Dann schreibst Du,

wenn in E ein gewisser Name steht

Wo den in Spalte E? E2, E3, E10?

Wie Du siehst, sind das bis jetzt nur Fragen und das sind noch nicht mal alle. Als sortiere noch mal alles und verfasse hier mal eine etwas genauere Aufgabenstellung, dann wird es sicherlich eine Lösung geben.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Helmut46

Hallo coros

Habe mir als noch mal durchgelesen du hast schon Recht mit genauer erklären,ich hoffe ich mache es jetzt besser.
Also ich möchte wenn ich in der UserForm1(habe ich Umbennent in Material) wie beschrieben mit 14 Buttons jeder Button ist umbeschriftet auf z.b.abdecken, wenn ich auf den drücke soll es mir die Daten (habe jetzt ein ListBox) in diese schreiben oder lesen wie auch immer.In Spalte E mit Überschrift Kategorie Stehen zum Beispiel 4 mal Abdecken E2 bis E6 und links und rechts davon A-J stehen die dazugehörigen Daten,dazu können im laufe der zeit noch ein paar Zellen mit Abdecken kommen. Wenn ich auf den Nächsten Button mit der beschriftung Lack drücke soll es mir die daten aus spalte E mit dem namen Lack schreiben sind um die 12 Namen mit Lack sind z b in Spalte E 11 bis E23 das verschiebt sich immer weil immer wieder neue namen Lack oder Lasur oder anderen Namen dazukommen ,ich sortier die Tabelle immer mit Spalte E also nach den Namen in Spalte E. Ich habe 14 verschiedene Namen in Spalte E und jeder Button soll mit einen Namen belegt werden.Bis Jezt geht die Tabelle von A2:A88 es werden im laufe der Zeit aber bestimmt noch das doppelt oder dreifach dazukommen.

Ich habe in Tabelle 1 mit Namen Nachkaultion und Tabelle 2 mit name Material habe in Tabelle 1 ein SVERWEIS auf das Blatt Material um nicht immer zwieschen den tabellen hin und herkliken zu müßen
habe mir die userForm1 in Tabelle 1 gemacht ,drücke auf denn Button mit Lack dann sollen die ganzen Daten mit Lack in der Listbox stehen und wenn ich auf denn Button Lasur drücke dann sollen die Daten mit Lasur in der Listbox stehen.

Ich hoffe ich habe es jetzt verständlich geschrieben.

Gruß helmut

Antwort 3 von coros

Moin Helmut,

jetzt habe ich es auch verstanden, hoffe ich jedenfalls. Kopiere nachfolgenden VBA Code in das VBA Projekt der UserForm, die die ganzen CommanButtons beinhaltet.

Option Explicit

Private Sub CommandButton1_Click()
Dim Letzte_Zeile_in_Spalte_E As Long, Wiederholungen As Long
Letzte_Zeile_in_Spalte_E = Range("E65536").End(xlUp).Row
ListBox1.Clear
For Wiederholungen = 2 To Letzte_Zeile_in_Spalte_E
If Cells(Wiederholungen, 5) = CommandButton1.Caption Then
ListBox1.AddItem Cells(Wiederholungen, 1).Value & ", " _
& Cells(Wiederholungen, 2).Value & ", " _
& Cells(Wiederholungen, 3).Value & ", " _
& Cells(Wiederholungen, 4).Value & ", " _
& Cells(Wiederholungen, 6).Value & ", " _
& Cells(Wiederholungen, 7).Value & ", " _
& Cells(Wiederholungen, 8).Value & ", " _
& Cells(Wiederholungen, 9).Value & ", " _
& Cells(Wiederholungen, 10).Value
End If
Next
End Sub

Private Sub CommandButton2_Click()
Dim Letzte_Zeile_in_Spalte_E As Long, Wiederholungen As Long
Letzte_Zeile_in_Spalte_E = Range("E65536").End(xlUp).Row
ListBox1.Clear
For Wiederholungen = 2 To Letzte_Zeile_in_Spalte_E
If Cells(Wiederholungen, 5) = CommandButton2.Caption Then
ListBox1.AddItem Cells(Wiederholungen, 1).Value & ", " _
& Cells(Wiederholungen, 2).Value & ", " _
& Cells(Wiederholungen, 3).Value & ", " _
& Cells(Wiederholungen, 4).Value & ", " _
& Cells(Wiederholungen, 6).Value & ", " _
& Cells(Wiederholungen, 7).Value & ", " _
& Cells(Wiederholungen, 8).Value & ", " _
& Cells(Wiederholungen, 9).Value & ", " _
& Cells(Wiederholungen, 10).Value
End If
Next
End Sub

Private Sub CommandButton3_Click()
Dim Letzte_Zeile_in_Spalte_E As Long, Wiederholungen As Long
Letzte_Zeile_in_Spalte_E = Range("E65536").End(xlUp).Row
ListBox1.Clear
For Wiederholungen = 2 To Letzte_Zeile_in_Spalte_E
If Cells(Wiederholungen, 5) = CommandButton3.Caption Then
ListBox1.AddItem Cells(Wiederholungen, 1).Value & ", " _
& Cells(Wiederholungen, 2).Value & ", " _
& Cells(Wiederholungen, 3).Value & ", " _
& Cells(Wiederholungen, 4).Value & ", " _
& Cells(Wiederholungen, 6).Value & ", " _
& Cells(Wiederholungen, 7).Value & ", " _
& Cells(Wiederholungen, 8).Value & ", " _
& Cells(Wiederholungen, 9).Value & ", " _
& Cells(Wiederholungen, 10).Value
End If
Next
End Sub


Die Code sind für die Schaltflächen CommandButton1 bis 3. Du musst entsprechend der Anzahl der vorhandenen Buttons, also bei Dir 14, einen CommandButton_Click Code kopieren und hinten anhängen. In dem kopierten Code musst Du in der Zeile

Private Sub CommandButton1_Click()

und

If Cells(Wiederholungen, 5) = CommandButton1.Caption Then

jeweils die Zahl abändern, da diese ja aussagt für welchen CommandButton dieser Code zuständig ist. Da Du geschrieben hast, dass Du jeden Button um beschriftet hast, bin ich mal davon ausgegangen, dass Du damit die Caption Eigenschaft des Buttons meintest, die den Text beinhaltet, der auf der Schaltfläche angezeigt wird. Das ist nämlich Bedingung bei obigen VBA Codes. Denn in der Zeile, in der Du ja auch die CommanButton Nummer ändern solltest steht ja CommandButton1.Caption. Das bedeutet, wenn auf den Button geklickt wird, wird nach dem Text in der Tabelle gesucht, der auch auf der Schaltfläche steht. Wenn die nicht identisch sein sollten und Du das nicht abändern möchtest, dann musst Du CommandButton1.Caption löschen und gegen den Suchbegriff, z.B. "Lasur" tauschen. Beachte aber, dass Du den Text zwischen 2 Anführungsstriche ("Lasur") setzt. Ansonsten macht der Code das, was Du wolltest. Er listet Dir in der ListBox die entsprechenden Daten aus Spalte A:D und F:J des Suchbegriffes auf. Wenn Du Deine Tabelle erweitern solltest, musst Du den VBA Code nicht anpassen, da dieser Variable arbeitet. Es wird immer die letzte beschriebene Zeile in Spalte A ermittelt und in dem Bereich E2:E letzte beschriebene Zeile nach Übereinstimmungen gesucht.

Ich hoffe, ich hab’s richtig verstanden und Du kommst klar. Bei Fragen oder Problemen melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Helmut46

Hallo coros
Super!!!!!!!!!!!!!!!!!
Genau so wie ich es mir vorgestellt hatte.Ich habe jetzt blos mal die drei die du mir geschickt hast ausprobiert klappt einwandfrei.
Jetzt habe ich blos noch ein Problem.Habe mir die UserForm für das Tabelle 1 Nachkalkulation gemacht mit den Button Eingabe Öffnen.Im Blatt Nachkalkulation liest es mir die Daten nicht ein ,dort bräuchte ich sie aber.Habe mir in Tabelle 2 Material wo die Daten sind schnell einen Button angelegt um die userform aufzurufen dort liest sie mir die daten einwandfrei ein.
Also ich rufe mir die UserForm in Tabelle 1 Nachkalkulation auf und dort müßte sie mir die daten aus Tabelle 2 material lesen.Das ich nicht immer zwischen denn zwei Blättern hin und her klicken muß.Ich hoffe du kannst mir nochmals helfen.

Aber erstmals Danke für die schnelle Hilfe .

Grus Helmut

Antwort 5 von coros

Nabend Helmut,

nachfolgend der geänderte Code wieder für drei Buttons.

Option Explicit

Private Sub CommandButton1_Click()
Dim Letzte_Zeile_in_Spalte_E As Long, Wiederholungen As Long
Letzte_Zeile_in_Spalte_E = Sheets("Tabelle2").Range("E65536").End(xlUp).Row
ListBox1.Clear
For Wiederholungen = 2 To Letzte_Zeile_in_Spalte_E
If Sheets("Tabelle2").Cells(Wiederholungen, 5) = CommandButton1.Caption Then
ListBox1.AddItem Sheets("Tabelle2").Cells(Wiederholungen, 1).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 2).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 3).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 4).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 6).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 7).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 8).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 9).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 10).Value
End If
Next
End Sub

Private Sub CommandButton2_Click()
Dim Letzte_Zeile_in_Spalte_E As Long, Wiederholungen As Long
Letzte_Zeile_in_Spalte_E = Sheets("Tabelle2").Range("E65536").End(xlUp).Row
ListBox1.Clear
For Wiederholungen = 2 To Letzte_Zeile_in_Spalte_E
If Sheets("Tabelle2").Cells(Wiederholungen, 5) = CommandButton2.Caption Then
ListBox1.AddItem Sheets("Tabelle2").Cells(Wiederholungen, 1).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 2).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 3).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 4).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 6).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 7).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 8).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 9).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 10).Value
End If
Next
End Sub

Private Sub CommandButton3_Click()
Dim Letzte_Zeile_in_Spalte_E As Long, Wiederholungen As Long
Letzte_Zeile_in_Spalte_E = Sheets("Tabelle2").Range("E65536").End(xlUp).Row
ListBox1.Clear
For Wiederholungen = 2 To Letzte_Zeile_in_Spalte_E
If Sheets("Tabelle2").Cells(Wiederholungen, 5) = CommandButton3.Caption Then
ListBox1.AddItem Sheets("Tabelle2").Cells(Wiederholungen, 1).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 2).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 3).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 4).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 6).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 7).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 8).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 9).Value & ", " _
& Sheets("Tabelle2").Cells(Wiederholungen, 10).Value
End If
Next
End Sub


Diesen Code kannst Du in jedem Tabellenblatt Deiner Datei aufrufen. Es wird Dir immer die Daten aus Blatt "Tabelle2" auflisten.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Helmut46

Hallo coros

vielen dank für deine schnelle Antwort.Kann es erst Morgen ausprobieren bin gerade beim Ausgehen.
Melde mich Morgen wieder nach der Arbeit wenn ich es alles Kopiert und nachgeschrieben habe.
Allso nochmals Vielen Dank bis morgen

Gruß Helmut

Antwort 7 von Helmut46

Hallo coros

habe die restlichen 11 kopiert haut soweit alles hin
es liest mir genau die Daten ein wenn ich den Button
für ads Material drücke einfach Super.
Es liest mir alle ein bis auf CommandButton2 und 7 da kommt garnichts kommisch, ich schau jetzt noch mal ob ich was falsch gemacht habe wenn ich es nicht hinbekomme melde ich mich Nochmal.

Allso nochmals vielen dank

Gruß Helmut

Antwort 8 von Helmut46

Hallo coros

Habe die codes 2 und 7 gelöscht und neu einkopiert jetzt haut alles wunderbar hin.

Allso nochmals vielen dank

Gruß Helmut