Office - Word, Excel und Co. 9.744 Themen, 41.408 Beiträge

Excel/VBA Druckmenü

incognito_23 / 14 Antworten / Flachansicht Nickles

Hallo,

ich (und das Internet) arbeite/n zur Zeit an einem Druckmenü. Im Grunde funktioniert es auch. Ich habe jedoch noch ein Problem mit der Anzahl der Ausdrucke. Und zwar soll über den Wert einer Zelle, die Anzahl der Ausdrucke definiert werden. 

Das Modul sieht wie folgt aus:

Option Explicit

Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long

Public hWnd As Long
Public Const SW_HIDE = 0 ' Versteckt öffnen
Public Const SW_MAXIMIZE = 3 ' Maximiert öffnen
Public Const SW_MINIMIZE = 6 ' Minimiert öffnen
Public Const SW_NORMAL = 1
Public Const SW_RESTORE = 9
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNOACTIVATE = 4

Public Function DateiOeffnen(Aktion As String, Pfad As String, _
Ansicht As Long) As Boolean
Call ShellExecute(hWnd, Aktion, Pfad, "", "", Ansicht)
End Function

Und die jeweiligen Buttons sind wie folgt aufgebaut: 

Private Sub Button1_Click()
Dim Pfad As String
Pfad = "Z:\xxx\test.pdf"
DateiOeffnen "print", Pfad, SW_MAXIMIZE
End Sub

Nun dachte ich mir, dass man einfach einen Loop einbauen kann:

Private Sub Mathetest_Click()
Dim Pfad As String
Dim i As Long
For i = Worksheets("2").Cells(1, 1).Value To Worksheets("2").Cells(1, 1).Value
Pfad = "Z:\bae\Druckmenü\Dokumente\Testseite.pdf"
DateiOeffnen "print", Pfad, SW_HIDE
Next i
End Sub

Steht nun eine 2 in der Zelle, öffnet sich Acrobat Reader auch zweimal aber druckt nur einmal die PDF.

Hat vielleicht jemand ein passenden Ratschlag für mein Problem?

bei Antwort benachrichtigen
hddiesel incognito_23 „Excel/VBA Druckmenü“
Optionen

Hallo,

siehe den Hinweis von Anne:

Es gab bei VBA die Option Schrittweise ausführen.

Diese Funktion gibt es immer noch, um dem Fehler auf die Spur zukommen und dabei kannst du feststellen, dass deine For ... Next Schleife, die falschen Werte erhällt und bei For und To mit gleichem Wert, gibt es nur einen Durchlauf der Schleife.

Steht in der Zelle A1 die 2:
For i = Worksheets("2").Cells(1, 1).Value To Worksheets("2").Cells(1, 1).Value

2 To 2 = 1x, da B1 und A1 gleich ist

Steht in der Zelle A1 die 1 und in der Zelle B1 die 2:
For i = Worksheets("2").Cells(1, 1).Value To Worksheets("2").Cells(1, 2).Value

1 To 2 = 2x, da B1 um 1 größer ist, als A1

Steht in der Zelle A1 die 2 und in der Zelle B1 die 3:
For i = Worksheets("2").Cells(1, 1).Value To Worksheets("2").Cells(1, 2).Value

2 To 3 = 2x, da B1 ebenfalls um 1 größer ist, als A1

Ändere deine Befehlszeile, dann sollte es funktionieren:
For i = 1 To Worksheets("2").Cells(1, 1).Value

Ist Worksheets("2").Cells(1, 1).Value kleiner 1, gibt es keinen For ... Next Durchlauf.

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen