Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

sehr unflexibeler und langer Code

sehr unflexibeler und langer Code
20.02.2008 18:44:16
Thomas
Hallo,
Habe nun folgende Frage zu dem Code
Diese abfrage muss ich ca. 140 mal oder auch mehr machen, mit verschiedenen Produkten
Produkt muss ich auch mal löschen oder neu Einfügen
If ComboBox2.Text = " Produkt l" Then ,
If ComboBox2.Text = " Produkt 2" Then ,
If ComboBox2.Text = " Produkt 2.1" Then,
If ComboBox2.Text = " Produkt 3" Then .usw
Also wenn ich z.B. ein neues Produkt einfugen oder ein altes löschen will ist das
sehr unflexibel und auch ein sehr langer Code wollte nun fragen ob jemand ne Lösung hat
Wie man das kürzer und flexibler machen kann
Private Sub CommandButton2_Click()
If ComboBox2.Text = "Produkt 1" Then
If TextBox6.Text "" Then
Sheets("Tabelle3").Range("D3").Value = Range("D3").Value + CDbl(TextBox6.Text)
End If
If TextBox5.Text "" Then
Sheets("Tabelle3").Range("C3").Value = Range("C3").Value + CDbl(TextBox5.Text)
End If
If TextBox7.Text "" Then
Sheets("Tabelle3").Range("E3").Value = Range("E3").Value + CDbl(TextBox7.Text)
End If
If TextBox7.Text "" Then
Sheets("Tabelle3").Range("D3").Value = Range("D3").Value - CDbl(TextBox7.Text)
End If
If TextBox7.Text "" Then
Sheets("Tabelle3").Range("C3").Value = Range("C3").Value - CDbl(TextBox7.Text)
End If
End If
End Sub

Private Sub UserForm_Initialize()
Dim i As Long
Dim u As Long
ComboBox2.Clear
ComboBox3.Clear
With Worksheets("Tabelle4")
For i = 1 To .Range("A65536").End(xlUp).Row
ComboBox3.AddItem .Cells(i, 1)
Next i
End With
With Worksheets("Tabelle5")
For u = 1 To .Range("A65536").End(xlUp).Row
ComboBox2.AddItem .Cells(u, 1)
Next u
End WithApplication.ScreenUpdating = True
End Sub


Gruß Thomas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sehr unflexibeler und langer Code
20.02.2008 19:20:00
Daniel
HI
das kommt jetzt darauf an, wie sich der Code des Letzten Makros bei den einzelnen Produkten unterscheidet.
wenns immer komplett anderer Code ist, gibts keine andere lösung, aber wenns nur unterschiede in irgendwelchen Zeilen oder Spalten sind, dann könnte man da u.U schon was machen, was vielleicht dann passend für alle Produkte ist.
Aber wie gesagt, es hängt halt davon ab, was mit jedem einzelnen Produkt gemacht werden soll.
Gruß, Daniel

AW: sehr unflexibeler und langer Code
20.02.2008 19:26:20
Ramses
Hallo
If ComboBox2.Text = " Produkt l" Then
... und was soll dann passieren ?
Wo stehen die Produktnamen ?
Hier mal ein Beispiel, wenn die Produktnamen in Spalte A+:A5 stehen

Sub test()
    Dim findRng As Range
    Dim searchRng As Range
    'Hier stehen die Produktnamen
    Set searchRng = Range("A1:A5")
    'Hier wird/soll der Produktname gefunden werden
    Set findRng = searchRng.Find(ComboBox2.Text, searchRng.Cells(1, 1))
    If findRng Is Nothing Then
        MsgBox "Nicht gefunden"
        Exit Sub
    End If
    MsgBox "Gefunden in: " & findRng.Address
End Sub

Gruss Rainer

Anzeige
AW: sehr unflexibeler und langer Code
20.02.2008 21:17:39
Thomas
Hallo Daniel/ Ramses
Es endert sich nur der Produktname also
Produktname Bestellung Versandfertig Ausgeliefert
Produktname1 (D3) =50 (C3)=10 (E3)= 0
Produktname 1 TextBox6 + D3 =D3 TextBox5 + C3 =C3 TextBox7 +E3 =E3
Und dann Bestellung = Versandfertig - Ausgeliefert
TextBox7 -D3 =D3 TextBox7 -C3 =C3 =E3
Neuer Produktname D4/C4E4 bis D140 /C140/E140
Den Produktname hohle ich mit der combobox2 aus
Tabelle 5
Ich hoffe ich konnte es besser beschreiben
Was ich machen will
Gruß Thomas

Anzeige
AW: sehr unflexibeler und langer Code
20.02.2008 21:39:00
Daniel
HI
sorry ich verstehs nicht.
den gewählten Produktnamen hast du doch als Wert der Combobox2,
und in diesem Code:

Private Sub CommandButton2_Click()
If ComboBox2.Text = "Produkt 1" Then
If TextBox6.Text  "" Then
Sheets("Tabelle3").Range("D3").Value = Range("D3").Value + CDbl(TextBox6.Text)
End If
If TextBox5.Text  "" Then
Sheets("Tabelle3").Range("C3").Value = Range("C3").Value + CDbl(TextBox5.Text)
End If
If TextBox7.Text  "" Then
Sheets("Tabelle3").Range("E3").Value = Range("E3").Value + CDbl(TextBox7.Text)
End If
If TextBox7.Text  "" Then
Sheets("Tabelle3").Range("D3").Value = Range("D3").Value - CDbl(TextBox7.Text)
End If
If TextBox7.Text  "" Then
Sheets("Tabelle3").Range("C3").Value = Range("C3").Value - CDbl(TextBox7.Text)
End If
End If
End Sub


wird der Produktname nur für die IF-Abfrage verwendet, weiter nicht.
also ich verstehe dein Problem wirklich nicht, die obige Beschreibung ist auch nicht wirklich hilfreich.
ne Beispieldatei könnt da mehr erreichen.
Gruß, Daniel

Anzeige
AW: sehr unflexibeler und langer Code
20.02.2008 23:02:00
Daniel
HI
so jetzt wird endlich klar, was du willst und was du brauchst.
dann nimm mal diesen Code für Commandbutton2, das passt für alle Artikel.

Private Sub CommandButton2_Click()
Dim Zeile As Long
With Sheets("Tabelle3")
Zeile = .Columns(2).Find(what:=ComboBox2.Text, lookat:=xlWhole).Row
If TextBox6.Text  "" Then .Cells(Zeile, 4).Value = .Cells(Zeile, 4).Value + CDbl(TextBox6. _
Text)
If TextBox5.Text  "" Then .Cells(Zeile, 3).Value = .Cells(Zeile, 4).Value + CDbl(TextBox5. _
Text)
If TextBox7.Text  "" Then
.Cells(Zeile, 5).Value = .Cells(Zeile, 5).Value + CDbl(TextBox7.Text)
.Cells(Zeile, 4).Value = .Cells(Zeile, 4).Value - CDbl(TextBox7.Text)
.Cells(Zeile, 3).Value = .Cells(Zeile, 3).Value - CDbl(TextBox7.Text)
End If
End With
TextBox5.Text = "0"
TextBox6.Text = "0"
TextBox7.Text = "0"
End Sub


Gruß, Daniel

Anzeige
AW: sehr unflexibeler und langer Code
21.02.2008 18:35:00
Thomas
Hallo
Danke Daniel echt super genau so habe ich mir das gedacht
Echt tolles Forum
Gruß Thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige