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)
|