Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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
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)
Registriert seit: 16.12.2016
Version(en): 2013
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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 16.12.2016
Version(en): 2013
Hallo,
lstResponse.List(spab, spac)
In lstResponse.List steht " Eigenschaft List konnte nicht abgerufen werden"
spab = 1
spac = 1
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 16.12.2016
Version(en): 2013
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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. 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)
|