AW: Hilfe! Variable als Hyperlink zum drucken einer Qu
18.01.2015 19:49:22
fcs
Hallo Michael,
das mit den Hyperlinks wird nichts oder unnötig kompliziert.
Der einfachere Weg ist den Druckvorgang für eine Quittung zu starten per Maus-Doppelklick oder Rechte-Maustaste-Klick in eine Zelle in einer bestimmten Spalte der jeweiligen Zeile.
Nachfolgen entsprechende Makros, die du bezüglich Zelladressen und Spaltennummer sowie ggf. Blattnamen anpassen musst.
Gruß
Franz
'Code unter "DieseArbeitsmappe" der Datei
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, _
Cancel As Boolean)
'Ereignismakro, den Doppelklick in eine Zelle in allen Tabellenblätter der Arbeitsmappe _
auswertet
Dim Zeile As Long
Dim wksQuittung As Worksheet
Set wksQuittung = ActiveWorkbook.Worksheets("Quittung")
Select Case Sh.Name
Case wksQuittung.Name, "Tabelle XYZ"
'in diesen Tabellenblätter keine Aktion bei Doppelklick
'weitere Blattnamen ggf. Anpassen/Ergänzen
Case Else
Select Case Target.Row
Case Is >= 1 'Nummer der Zeile ab der Kundendaten stehen
Select Case Target.Column
Case 5 '5 = Splate E - Spalte in der Doppelklick in eine Zelle die _
Quittung druckt, ggf. anpassen
Zeile = Target.Row
Cancel = True
If MsgBox("Quittung für Kunde in Zeile " & Zeile & " drucken?" _
& vbLf & vbLf & "Drucker: " & Application.ActivePrinter, _
vbQuestion + vbOKCancel, "Quittung drucken") = vbOK Then
Call prcDruckenQuittung(wks:=Sh, lngZeile:=Zeile)
End If
Case Else
'do nothing
End Select
Case Else
'do nothing
End Select
End Select
End Sub
'Code in einem allgemeinen Modul der Datei
Public Sub prcDruckenQuittung(wks As Worksheet, ByVal lngZeile As Long)
'Quittung mit Daten aus Blatt / Zeile drucken
Dim wksQuittung As Worksheet
Set wksQuittung = ActiveWorkbook.Worksheets("Quittung")
With wksQuittung
'Werte aus Zeile im Blatt in Quittung eintragen Zelladressen/Spaltennummern anpassen !!! _
.Range("B4").Value = wks.Cells(lngZeile, 1).Text 'Name
.Range("C4").Value = wks.Cells(lngZeile, 2).Text 'Vorname
.Range("C6").Value = wks.Cells(lngZeile, 3).Text 'Dienstleistungsart
.Range("C8").Value = wks.Cells(lngZeile, 4).Value 'Kosten
.PrintOut
End With
End Sub
'Alle Quittungen drucken
Public Sub Alle_Quittungen_drucken()
Dim Zeile As Long
Dim wksKunde As Worksheet
If MsgBox("Jetzt die Quittungen für alle Kunden in allen Kunden-Tabellen drucken?" _
& vbLf & vbLf & "Drucker: " & Application.ActivePrinter, _
vbQuestion + vbOKCancel, "Quittungen drucken") = vbCancel Then Exit Sub
For Each wksKunde In ActiveWorkbook.Worksheets
Select Case wksKunde.Name
Case "Quittung", "Tabelle XYZ"
'Diesen Tabellenblätter enhalten keine Kundendaten
'weitere Blattnamen ggf. Anpassen/Ergänzen
Case Else
With wksKunde
'Startzeile der Schleife ggf. anpassen
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
Call prcDruckenQuittung(wks:=wksKunde, lngZeile:=Zeile)
Next
End With
End Select
Next
End Sub