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

welche Lösung ist besser

welche Lösung ist besser
18.01.2017 06:48:42
Mike
Guten Morgen,
ich benötige mal wieder eure Hilfe.
Zur Vereinfachung schildere ich das Problem mal so:
Ich habe zehn Regale und jedes Regal hat 32 Fächer in denen man Material ablegen kann.
Bis jetzt wurde alles von Hand eingegeben und deshalb manche Sachen vergessen, deshalb habe ich jetzt angefangen ein kleines VBA-Programm zu schreiben. Diese macht folgendes, es öffnet eine Inputbox in der das neue Material eingeben wird und schreibt dieses in die richtige Zelle. Zuvor schreibt er das alte Material in eine Backupliste, schreibt das aktuelle Datum in die richtige Zelle und noch ein paar Sachen mehr.
Zur Zeit habe ich angefangen das so zu lösen. Ich habe hinter jedes Fach einen Commando-Button eingefügt, der mir das Programm öffnet und die Zelle aktiviert, in welchem Fach ich mich befinde. Von dort aus geht er das Programm jetzt eine Zelle an links und zwei Zellen nach unten und nimmt den Wert und kopiert ihn an eine andere Stelle usw..
Jetzt musste ich zwar das Programm nur einmal schreiben, muss aber 320 Commando-Button einfügen, damit er immer die aktuelle Zelle aktiviert.
Ich habe jetzt ein Video gesehen, in dem man eine Userform mit zwei Kombo-Feldern programmieren kann, in der man zum Beispiel im Ersten das Regal und im zweiten das Fach auswählen könnte und im dritten Feld das Material eingeben könnte.
Jetzt meine frage wie könnte ich dann die richtige Zelle aktivieren? Meine Idee war evtl. mit Case. Und dann das Programm ganz normal starten.
Welche Möglich haltet ihr für besser? Und könnte mir einer an einem kurzen Beispiel erklären, wie das mit Case und aktivieren einer Zelle funktioniert.
Danke schon mal für Eure Hilfe.
Gruß,
Mike

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: welche Lösung ist besser
18.01.2017 08:07:20
A.Kappler
Wieso case?
führe doch das aus was du mit dem comandbutton ausfürst und füge anstatt "A1" Range(ComboBox1.Text & ComboBox2.Text). ... ein oder deklariere dir das
Sub Schaltfläche1_Klicken()
Dim Auswahl As String
Auswahl = ComboBox1.Text & ComboBox2.Text
Range(Auswahl).Offset(1, 2).Value = "Dein Text"
End Sub

AW: welche Lösung ist besser
18.01.2017 08:14:42
A.Kappler
Hallo Nochmal
zum Befüllen der Comboboxen kannst du ja Jeweils
Private Sub UserForm_Initialize()
Dim h As Long
For h = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ComboBox1.AddItem h
Next h
End Sub

Usw verwenden
im weiteren dann eher Cells(x,y) anstatt Range("xy") verwenden
Anzeige
AW: welche Lösung ist besser
18.01.2017 08:48:31
Mike
Hallo A. Kappler,
vielen dank für Deine Antwort.
Das Problem, das ich habe ist, das Fach Nr 1 von Regal Nr.1 die Werte in den Zellen "A2 bis A5" eingetragen werden, die Werte von Fach Nr 2 in den Zellen "A6 bis A9", die Werte von Fach Nr. 9 werden in den Zellen "D2 bis D5" eingetragen usw..
Du musst Dir das ganze wirklich wie ein offenes Regal vorstellen in denen es 4 Spalten mit je 8 Fächern gibt. Deshalb brauche ich als aktive Zelle für Fach 1 die Zelle "B2" für Fach 2 die Zelle "B6" für Fach 9 die Zelle "E2" usw..
Das zweite Regal ist dementsprechend unter Regal 1 angeordnet, so das ich einen DINA4 Ausdruck für jedes Reagal machen könnte.
Deshalb suche ich eine Lösung in der, wenn im Kombofeld 1 die "1" und im Kombofeld 2 die "1" angewählt wurde die Zelle "B2" zur aktiven Zelle wird, bei Auswahl "1" und "9" Zelle "E2" zur aktiven Zelle wird.
Ich hoffe Du verstehst jetzt mein Problem.
Gruß,
Mike
Anzeige
AW: welche Lösung ist besser
18.01.2017 09:01:06
A.Kappler
Ok verstehe.
da Fällt mir zurzeit leider Nichts zu ein.....
Tut mir Leid.
AW: welche Lösung ist besser
18.01.2017 09:28:03
hary
Moin
Besser waere es mit Bsp.-Mappe.
Du kannst es auch mit Bereichsnamen machen oder mit Case in dem du Cbo1&Cbo2 zusammenfasst und mit Case arbeitest.
Im Ansatz Bsp.-weise so.
Dim regal As String
Select Case ComboBox1 & ComboBox2
Case 11: regal = "B2"
Case 12: regal = "B6"
Case 19: regal = "E2"
End Select
Range(regal).Select

gruss hary
AW: welche Lösung ist besser
18.01.2017 09:32:19
Mike
Hallo hary,
danke für deine Antwort.
Das werde ich mal versuchen und es dann berichten. Wird aber wahrscheinlich erst morgen werden.
Gruß,
Mike
Anzeige
AW: welche Lösung ist besser
20.01.2017 09:24:27
Mike
Hallo hary,
entschuldige bitte , das ich mich erst heute melde, aber die letzten Tage waren ein bisschen stressig.
Aber vielen, vielen Dank. Deine Lösung hat super geklappt und mir ein haufen Arbeit erspart.
Vielen Dank nochmal und ein schönes Wochenende.
Gruß,
Mike
AW: welche Lösung ist besser
20.01.2017 12:27:04
Mike
Hallo,
ich glaube ich mache irgendwo einen Fehler, weiß aber nicht wo. Vielleicht kann mir einer helfen.
Ich habe das Beispiel von hary in mein Formular bei "Privat Sub cmdEingabe_Click()" eingebaut. Er springt auch auf genau das Feld welches ich auswählen möchte. Wenn ich jetzt folgendes eingebe:
"ActiveCell.FormulaR1C1 = frmNeuesFach.cboBezeichnung.value"
funktioniert alles perfekt, so wie es soll.
Wenn ich jetzt zusätzlich folgende Befehlszeile darunter einfüge, um die Materialnummer in der Tabelle eine Zelle unterhalb einzufügen, überschreibt er meine Bezeichnung in der Zelle.
"ActiveCell.Offset(1,0).Range("A1").select"
"ActiveCell.FormulaR1C1 = frmNeuesFach.txtArtikelnummer.value"
Kann mir jemand sagen, warum er bei mir im Bespiel 1 z.B. in Zelle "B2" die Bezeichnung schreibt und dann die Artikelnummer wieder in Zelle"B2", obwohl er diese eigentlich in Zelle "B3" schreiben soll.
Muss ich die Zelle in der das VBA-Programm etwas schreiben soll unbedingt mit".select" auswählen, oder geht das auch anders?
Gruß,
Mike
Anzeige
AW: welche Lösung ist besser
20.01.2017 14:41:18
Michael
Hi,
das .select ist völlig überflüssig, ebenso das .formulaR1C1: Du willst ja nur einen Wert zuweisen:
ActiveCell.Offset(1,0).value = frmNeuesFach.txtArtikelnummer.value
Ansonsten ist es sicher eine Geschmacksfrage, aber in so einem Fall würde ich ein Doppelklick-Ereignis verwenden: sobald man in ein Fach klickt, wird das Makro aufgerufen: die "Mathematik" dahinter ist relativ simpel, würde aber eine Beispieldatei erfordern.
Gruß,
Michael
AW: welche Lösung ist besser
20.01.2017 15:28:44
Mike
Hallo Michael,
vielen Dank. Hat geklappt.
Schönes Wochenende noch.
Gruß,
Mike
sehr schön, danke für die Rückmeldung,
20.01.2017 15:58:56
Michael
Mike,
Dir auch und Grüße,
Michael
Anzeige
AW: welche Lösung ist besser
23.01.2017 22:16:49
Mike
Hallo hary,
jetzt habe ich noch ein kleines Problem und komme alleine nicht weiter.
Wenn in der Combobox1 das Regal1 angewählt wurde, soll eine Variable mit dem Wert aus Tabelle1 Zelle"B9" befüllt werden und an ein neues Sub übergeben werden, wenn Regal2 ausgewählt wird der Wert aus Zelle"B10" usw..
Ich habe es versucht, wie in Deinem Beispiel, allerdings in ein Modul, Variable "Stunden" as String und dann select Case ComboBox1 und case1: Stunden ="Tabelle1!B9" usw.. Wenn es dann den Wert von Stunden in die neue Zelle schreiben soll, kommt immer der Fehler bei folgender Zeile:
.Offset(2, 2).Value = Range("Stunden").
Kannst Du mir evtl. sagen, aws ich falsch mache?
Gruß,
Mike
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige