Listeneintrag Uhrzeit zum drucken verändern
#31
Hallöchen,

hier erst mal zum Test ein kleines Makro. Um die vor einem Wechsel aktive Zelle zu identifizieren, nimmst Du eine Public Variable. Beim Zellwechsel wird darin die letzte Zelladresse gespeichert. Nach dem Öffnen der Datei ist diese Variable jedoch noch leer, eventuell befüllst Du sie an der Stelle. Musst nur schauen, dass Du dabei auf dem richtigen Blatt bist Smile

Option Explicit
Public strLast As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If strLast <> "" Then
  Range(strLast).Interior.Color = xlNone
End If
strLast = Target.Address
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#32
Code:
Private Sub cmdPrint_Click()
Dim zeLB As Long, spLB As Long
Dim zeTB As Long, spTB As Long
Dim spab As Long, spac As Long
Dim agTB As Long, agLB As Long
Dim allesDrucken As Boolean
 
   ' Zellen leeren
   
   Range("Druckvorlage!A5:P1000") = ""  'Bereich in den die Ergebnis eingetragen werden
     
   '--- Drucker auswählen
   Application.Dialogs(xlDialogPrinterSetup).Show
   
   With ActiveSheet.PageSetup
   
   .LeftFooter = "&""Calibri""&10&BBitte beachten Sie:&B" & Chr(10) & "&8Terminabsage nur in dringenden" & Chr(10) & "Fällen, spätestens jedoch " & Chr(10) & "24 Stunden vor der Behandlung." & Chr(10) & "Nicht rechtzeitig abgesagte Termine" & Chr(10) & "werden privat in Rechnung gestellt."
       
    '.RightFooter = "&""Calibri""&8&BHinweis für Dauerpatienten:&B" & Chr(10) & "Um Behandlungspausen zu vermeiden" '& Chr(10) & "sowie Termin- und Therapeutenwünsche" & Chr(10) & "zu berücksichtigen, bitte Folgetermine" & Chr(10) & "8 Wochen im Voraus vereinbaren!" & Chr(10) & "&BMittagpause 12 - 14 Uhr&B"

   End With
   '-- Prüfen, ob alles gedruckt werden muss
   For zeLB = 1 To lstResponse.ListCount - 1
       allesDrucken = allesDrucken Or lstResponse.Selected(zeLB)   'Zeile aus der Listbox
   Next
   zeTB = 3
   spLB = 7
   
   '--- selektierte Listboxeinträge in Zellen schreiben
   For zeLB = 1 To lstResponse.ListCount - 1
       If lstResponse.Selected(zeLB) Or Not allesDrucken Then
           zeTB = zeTB + 1
          Select Case UCase(lstResponse.List(zeLB, 4))
              Case "KG", "BAD", "BANDAGE", "LYM30", "LYM45", "LYM60", "MASSAGE", "FUSSPFLEGE", "PODOLOGIE", "FUSSREFLEX", "CMD", "VM", "BM"
                  Sheets("Druckvorlage").Cells(zeTB, spLB + 1) = Format(CDate(lstResponse.List(zeLB, 2)) + TimeSerial(0, 20, 0), "hh:nn")
              Case "PM40", "PVM40", "CMDP40", "PKG40"
                  Sheets("Druckvorlage").Cells(zeTB, spLB + 1) = Format(CDate(lstResponse.List(zeLB, 2)) - TimeSerial(0, 20, 0), "hh:nn")
              Case Else
              Sheets("Druckvorlage").Cells(zeTB, spLB + 1) = lstResponse.List(zeLB, 2)
          End Select
            For spLB = 2 To lstResponse.ColumnCount - 1  'Ab welcher Spalte aus der Suchergebnisliste soll gedruckt werden
               Sheets("Druckvorlage").Cells(zeTB, spLB + 1) = lstResponse.List(zeLB, spLB) 'zeTB Zeile, spTB Spalte
           Next
           For spab = 1 To 1
        spac = 1   'Spalte 1 Patient
        agTB = 1   'Zeile 1
        agLB = 6   'Spalte 6 (D)  'Patientenname eintragen
        Sheets("Druckvorlage").Cells(agTB, agLB) = lstResponse.List(spab, spac)
    Next
           End If
           
   Next
   Sheets("Druckvorlage").Visible = True
   ' Drucke Tabellenblatt
   Worksheets("Druckvorlage").PrintOut
   Sheets("Druckvorlage").Visible = True
End Sub
In diesem Code bekomme ich immer an dieser Stelle,  Sheets("Druckvorlage").Cells(agTB, agLB) = lstResponse.List(spab, spac), beim Ausdrucken des Selektierten Suchergebnis aus der Listbox
, aber nicht bei allen Ergebnissen, oft den Laufzeitfehler 381.
Top
#33
Hallöchen,

überprüfe doch mal den Inhalt der beiden Variablen sowie insgesamt den Ausdruck
lstResponse.List(spab, spac)

(Könntest Du auch vor der Zeile mit Debug.Print lstResponse.List(spab, spac) ausgeben)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#34
Hallo,

lstResponse.List(spab, spac)

In lstResponse.List steht " Eigenschaft List konnte nicht abgerufen werden"
spab = 1
spac = 1
Top
#35
Hi,
Hast Du eventuell nur eine Spalte in der Listbox oder nur einen oder keinen Eintrag drin?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#36
Hallo,

habe es gerade mal folgendes ausprobiert:

Suche mit nur einem Ergebnis in der Listbox und mit 2 Ergebnissen.

Nur 1 Ergebnis wird nicht gedruckt und es kommt der Fehler.
Mit 2 geht es.

Was kann ich machen das er auch den einen Eintrag bearbeitet?

Gruß Arnold
Top
#37
Hallöchen,

wie gesagt, prüfe mal die Variablen usw. Sind die ok?

Deine Schleifen sind nicht besonders groß, z.B.

For zeLB = 1 To lstResponse.ListCount - 1

Reicht das aus?

So was

For spab = 1 To 1

macht eher sinn, wenn Du nach Codezeilen bezahlt wirst. Smile Eine Schleife von 1 bis 1 wird genau 1x durchlaufen
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste