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

Code für ComboBox

Code für ComboBox
tursiops
Hallo!
Ich brauche mal wieder etwas Hilfe von den Profis:
Ich möchte den Rechnungsdruck vereinfachen. Die Beispieldatei ist zu groß, daher versuche ich das Problem zu beschreiben...
Im Sheet wähle ich per Makro über eine in Spalte A improtierte Kundenliste Kunden aus. Dazu habe ich B11 über Gültigkeit - Liste einen Bezug auf Spalte A verpasst. Das Makro durchläuft die Liste von max. 91 Kunden automatisch und druckt das aktuelle Sheet sobald der Wert in G47 größer 0 ist. Das klappt irgendwie, ist aber höchst umständlich...
Bisher sieht der Code so aus:
Sub Seriendruck()
Application.ScreenUpdating = False
Application.Run "Blattschutz_aus"
'1
Range("B11").Select
ActiveCell.FormulaR1C1 = "=R[-8]C[-1]"
Range("G47").Select
If ActiveCell > 0 Then
Application.Run "Quickprint"
Application.Run "Druckverweigerung"
Application.Run "Rech_speich"
End If
'2
Range("B11").Select
ActiveCell.FormulaR1C1 = "=R[-7]C[-1]"
Range("G47").Select
If ActiveCell > 0 Then
Application.Run "Quickprint"
Application.Run "Druckverweigerung"
Application.Run "Rech_speich"
End If
'91
Range("B11").Select
ActiveCell.FormulaR1C1 = "=R[+83]C[-1]"
Range("G47").Select
If ActiveCell > 0 Then
Application.Run "Quickprint"
Application.Run "Druckverweigerung"
Application.Run "Rech_speich"
End If
'statistische Daten übernehmen
Application.Run "Statistikdaten"
'zurücksetzen auf ersten Kunden
Range("B11").Select
ActiveCell.FormulaR1C1 = "=R[-7]C[-1]"
Application.Run "Blattschutz_an"
Application.ScreenUpdating = True
End Sub
Ich möchte die Prozedur nun vereinfachen.
1. Die Gültigkeitsliste soll weg. Dazu habe ich eine Combobox eingebaut, die einen direkten Bezug zur Kundendatenbank hat. Kunden auswählen kann ich bereits, das Sheet aktualisiert sich auch danach, aber den Code so verändern, das die ersten 91 Werte der Liste in der Box durchlaufen werden, dazu reichen meine Kenntnisse nicht.
2. Der Code sollte vereinfacht werden, so dass ich nicht 91mal denselben hintereinander schreiben muss.
Über etwas Hilfe oder Lösungsansätze wäre ich sehr dankbar.
Gruß tursiops

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
Teillösung
15.07.2009 21:17:15
ChrisL
Hallo
Hier die Lösung zum Problem "...so dass ich nicht 91mal denselben hintereinander schreiben muss."
Dim i As Integer
For i = 1 to 91
Range("B11").FormulaR1C1 = "=R[" & i-9 & "]C[-1]"
If Range("G47") > 0 Then
Application.Run "Quickprint"
Application.Run "Druckverweigerung"
Application.Run "Rech_speich"
End If
Next i
Für das andere Problem reicht mir die Vorstellungskraft nicht
mfg
Chris
PS: Ein Hinweis...
1 - 9 = -8 ("=R[-8]C[-1]")
2 - 9 = -7 ("=R[-7]C[-1]")
91 - 9 = +82 (warum +83, keine Ahnung)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige