Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Druckauftrag

Betrifft: Druckauftrag von: Alexa
Geschrieben am: 18.09.2014 09:42:32

Guten morgen zusammen,

ich habe folgendes Problem:

Ich habe eine Exceldatei mit 12 Seiten. Jede Seite beinhaltet einen Reinigungsplan für einen Monat (Jan-Dez)

Dazu gibt es noch 5 Reiter für je einen Raum.

Jetzt habe ich ein UserForm gemacht mit einer Dropdownliste, in der man Jan bis Dez auswählen kann.

Könnt ihr mir jetzt dabei helfen, dass wenn ein Monat ausgewählt wurde (und bestätigt), dass dann in jedem Reiter die jeweilige Seite gedruckt wird?

Vielen Dank schon mal

Liebe Grüße

Alexa

  

Betrifft: AW: Druckauftrag von: yummi
Geschrieben am: 18.09.2014 10:13:50

Hallo alexa,

lad mal die Datei hoch

Gruß
yummi


  

Betrifft: AW: Druckauftrag von: Alexa
Geschrieben am: 18.09.2014 10:28:34

https://www.herber.de/bbs/user/92701.xlsm

Das ist eine Beispieldatei..leider nur mit 1 Reiter, da sie sonst zu groß ist...auf jedem weiteren Reiter ist aber genau das Gleiche drauf, nur mit anderen Räumen.

Immer der Teil unter Wartung und Reinigung soll 1 Seite sein.

Danke;-)


  

Betrifft: Gib mal weitere Infos von: yummi
Geschrieben am: 18.09.2014 10:47:53

Hallo Alexa,

wenn ich mich gerade nicht ganz doll verguckt habe sind deine Seiten unterschiedlich groß (ob Absicht oder nicht). Du kannst also den Bereich festlegen, der gedruckt werden soll (ich nehme mal an jeweils von Wartung bis unterschreiben)

With Sheets("Tabelle1") 
  'Druckbereich festlegen: 
  .PageSetup.PrintArea = "$A$1:$B$10"  'hier deinen Bereich angeben 
  'Drucken: 
  .PrintOut 
  'Druckbereich aufheben: 
  .PageSetup.PrintArea = "" 
End With
gib mal bitte an welchen Bereich du jeweils drucken willst und wie du dein Userform aufrufen willst,
dann guck ich mal was ich da machen kann.

Gruß
yummi


  

Betrifft: AW: Gib mal weitere Infos von: Alexa
Geschrieben am: 18.09.2014 10:57:38

Der Druckbereich ist im Januar: A1-CL30
Februar: A31-CL60
März: A61-CL90
April: A91-CL120
Mai: A121-CL150
Juni:A151-CL180
Juli: A181-CL210
August:A211-CL240
September:A241-CL270
Oktober:A271-CL300
Novermber:A301-CL330
Dezember:A331-CL360

Da UserForm rufe ich so auf:

Private Sub CommandButton1_Click()
UserForm2.Show


Visible = False ' mache Button unsichtbar, sonst holperts ein wenig
AutoSize = True  ' Zeichnet den Button korrekt um den Text, der dann wieder die Originalgrösse  _
hat
AutoSize = False  ' Schalte vom Automaticmodus wieder in Fix- Modus
Height = 82.5  ' Zeichne Buttonhöhe wieder auf die von mir vorgesehene Höhe
Weight = 200.25  ' Zeichne Buttonbreite wieder auf die von mir festgelegte Breite
Visible = True  ' mache den Button jetzt wieder mit den richtigen Werten sichtbar. End With


End Sub
Und dann hab ich dort eine Dropdownliste der Monate, die ich auf einem Reiter Stammdaten habe:
Private Sub userform_Initialize() ' Dropdownliste
Dim wiederholungen As Integer
For wiederholungen = 2 To Sheets("Stammdaten").Range("A65536").End(xlUp).Row
ComboBox1.AddItem Sheets("Stammdaten").Cells(wiederholungen, 1)

Next


End Sub



  

Betrifft: AW: Gib mal weitere Infos von: yummi
Geschrieben am: 18.09.2014 11:10:31

Hallo Alexa,

das ist in der von dir hochgeladenen Datei nicht dabei. Weder Userform2 noch dein Commandbutton. Hast du wohl beim kleiner machen wegoptimiert :-)

Du hast ja den Index deines gewählten Monats aus der Userform, dann weißt du auch wie der zu druckende Bereich lautet

function DruckeBereich(ByVal wks as worksheet; ByVal strRange as string)

With wks 
  'Druckbereich festlegen: 
  .PageSetup.PrintArea = str 
  'Drucken: 
  .PrintOut 
  'Druckbereich aufheben: 
  .PageSetup.PrintArea = "" 
End With
end function
Zum Aufruf
wenn z.B Januar gewählt:


call DruckeBereich (Thisworkbook.Sheets("deinSheet"), "A1-CL30")

hilft dir das weiter, dass du es selber umsetzen kannst?
sonst musst Du nochmal die Datei mit deinem Userform2 und commandButton hochladen

Gruß
yummi


  

Betrifft: AW: Gib mal weitere Infos von: Alexa
Geschrieben am: 18.09.2014 11:18:02

https://www.herber.de/bbs/user/92703.xlsm


Jetzt ist des UserForm auch drin...

Danke für deine Hilfe..


  

Betrifft: AW: Gib mal weitere Infos von: Alexa
Geschrieben am: 18.09.2014 11:05:58

Ich hab auf dem UserForm noch nen Button "Drucken"..
Wenn der gedrückt wird, sollen eben die Pläne gedruckt werden für den jeweiligen Monat
Vielen Dank;-)


  

Betrifft: AW: Gib mal weitere Infos von: yummi
Geschrieben am: 18.09.2014 11:12:29

Hallo Alexa,
an dieser Stelle dann die function aus dem letzen post aufrufen

Gruß
yummi


  

Betrifft: AW: Gib mal weitere Infos von: Alexa
Geschrieben am: 18.09.2014 11:26:30

Private Sub CommandButton1_Click()

Call DruckeBereich(ThisWorkbook.Sheets("Raum1"), "A1-CL30")
End Sub

Function DruckeBereich(ByVal wks As Worksheet, ByVal strRange As String)

With wks
'Druckbereich festlegen:
.PageSetup.PrintArea = Str
'Drucken:
.PrintOut
'Druckbereich aufheben:
.PageSetup.PrintArea = ""
End With
End Function Ich habs jetzt so reingeschrieben,

dann kommt aber die Meldung: Argument ist nicht optional und der Teil den ich fett markiert hab leuchtet gelb...


  

Betrifft: AW: Gib mal weitere Infos von: yummi
Geschrieben am: 18.09.2014 11:37:57

Hallo Alexa,
sry war syntax fehler. ich hab es mal in der angehängten datei ungetestet eingesetzt, da noch ein paar sheets fehlen. Evtl musst du den Sheetnamen noch anpassen, sonnst sollte es eigentlich klappen.

In Modul1 die neue funktion und den Druckbutton mit code hinterlegt. Wobei ich davon ausgegangen bin, das deine Combobox1 mit den Monatsnamen gefüllt wird. Kann ich nicht sehen, da das Sheet Stammdaten, von wo du die Daten holst fehlt.

sollte aber so passen https://www.herber.de/bbs/user/92704.xlsm

Gruß
yummi


  

Betrifft: AW: Gib mal weitere Infos von: Alexa
Geschrieben am: 18.09.2014 12:36:37

Hey,

es wird mir ein Fehler angezeigt: Der eingegebene Text ist kein gültiger Bezug oder kein gültiger Name, Laufzeitfehler 1004...

was mache ich falsch?


  

Betrifft: AW: Gib mal weitere Infos von: yummi
Geschrieben am: 18.09.2014 12:53:05

Hallo Alexa,

laufzeitfehler1004 deutet auf einen verwendeten Namen hin, den es nicht gibt z.B. ein Sheet
wenn du mit dem debugger schritt für schritt durchgehst zeigt er dir genau die zeile an wo es fehlschlägt. Da teile deiner Datei gefehlt haben, musste ich ein paar Annahmen treffen wie z.B. das in der Combobox die Monatsnamen stehen.
Wenn du die Zeile gefunden hast, kannst du dir anschauen was genau in der Variablen drinsteht. Wenn es eine Stelle ist, wo der wert hardcoded ist, kannst du ihn einfach anpassen. Wenn es eine Stele ist, wo etwas zusammen gesetzt wird, dann musst du die Stelle anfassen, wo es zusammen gesetzt wird.

Wie gesagt, dadurch das die Hälfte gefehlt hat konnte ich es nicht testen.

Gruß
yummi


  

Betrifft: AW: Gib mal weitere Infos von: Alexa
Geschrieben am: 18.09.2014 12:54:59

.PageSetup.PrintArea = strRange

Hier sei der Fehler sagt er mir


  

Betrifft: AW: Gib mal weitere Infos von: yummi
Geschrieben am: 18.09.2014 13:08:44

dann liegt es an strRange
was steht da drin?
sollte so etwas wie A1:CL30 sein

sonst musst du das vor dem aufruf der Funktion bei deinem Button Code anpassen.
Gruß
yummi


  

Betrifft: AW: Gib mal weitere Infos von: Alexa
Geschrieben am: 19.09.2014 07:30:27

Guten morgen, also er druckt jetzt.

Ich habe im Modul 1 stehen:

Function DruckeBereich(ByVal wks As Worksheet, ByVal strRange As String)

With wks
'Druckbereich festlegen:
.PageSetup.PrintArea = strRange
'Drucken:
.PrintOut
'Druckbereich aufheben:
.PageSetup.PrintArea = ""
End With
End Function
Und im UserForm:

Private Sub CommandButton1_Click()
'falls in der Combobox1 die monate stehen, da Sheet Stammdaten nicht dabei ist
Dim strRange As String
 'angenommen listindex 1 ist januar 2 februar usw
 
 strRange = "A" & Me.ComboBox1.ListIndex & ":CL" & Me.ComboBox1.ListIndex * 30
 Call DruckeBereich(ThisWorkbook.Sheets("M4746.Bihler"), strRange)
 


End Sub

Private Sub userform_Initialize() ' Dropdownliste
Dim wiederholungen As Integer
For wiederholungen = 2 To Sheets("Stammdaten").Range("A65536").End(xlUp).Row
ComboBox1.AddItem Sheets("Stammdaten").Cells(wiederholungen, 1)

Next


End Sub
(Januar-Dezember stehen im Reiter Stammdaten in A2-A13)

Das Problem jetzt ist, dass er die Fehlermeldung bei Januareingabe bringt. Was mache ich falsch?

Danke und Grüße

Alexa


  

Betrifft: AW: Gib mal weitere Infos von: yummi
Geschrieben am: 19.09.2014 10:40:21

Hallo alexa,

kannst Du bitte mal überprüfen, ob evtl der Druck jeweils für den Vormonat des eigentlcih gewählten Montat ausgeführt wird, also Du wählst Februar, gedruckt wird Januar usw.

Wenn das so ist, dann ändere in CommandButton1Click das fett gedruckte

strRange = "A" & Me.ComboBox1.ListIndex+1 & ":CL" & (Me.ComboBox1.ListIndex +1) * 30

Wenn das nicht hilft musst du versuchen die komplette Datei posten (vlt als zip)

Gruß
yummi