Seite 1 von 1
[gelöst]nur dann, einen bestimmten Bereich drucken, wenn in einer Zelle ein X
Verfasst: Mi, 08.01.2025 15:28
von little fingers
Hallo Zusammen!
Frohes, neues Jahr wünsche ich Euch allen!
Ich würde gerne einen bestimmten Bereich in einer bestimmten Tabelle ausdrucken wollen, wenn in einer bestimmten Zelle ein X eingetragen ist.
z.B.:
Tabellenname: Ab_Schein
Position: Tabelle 44
Zelle, wo X eingetragen: I11
Bereich, der gedruckt werden soll: A10:H72
Ich hatte zwar ein Makro gefunden, was allerdings nicht funktioniert:
Code: Alles auswählen
Sub PrintIfXInCell()
Dim oDoc As Object
Dim oSheet As Object
Dim oRange As Object
Dim cell As Object
' Aktuelles Dokument und Blatt abrufen
oDoc = ThisComponent
oSheet = oDoc.Sheets(43) ' 0 für das erste Blatt
' Zelle I11 prüfen
cell = oSheet.getCellByPosition(10, 8) ' I11 entspricht Position (0, 0)
' Wenn in I11 ein "x" steht
If cell.String = "X" Then
' Bereich A10:H72 zum Drucken festlegen
oRange = oSheet.getCellRangeByName("A10:H72")
' Druckbereich festlegen
oDoc.PrintRanges.Clear() ' Vorherige Druckbereiche löschen
oDoc.PrintRanges.add(oRange) ' Neuen Druckbereich hinzufügen
' Drucken
oDoc.print()
End If
End Sub
wäre schön, wenn ich da Hilfe bekommen könnte..
Schon einmal Danke, für Interesse
Gruss Ingo
Re: nur dann, einen bestimmten Bereich drucken, wenn in einer Zelle ein X
Verfasst: Mi, 08.01.2025 15:51
von mikeleb
Hallo,
was heißt
was allerdings nicht funktioniert
Fehlermeldung?
Re: nur dann, einen bestimmten Bereich drucken, wenn in einer Zelle ein X
Verfasst: Mi, 08.01.2025 16:14
von little fingers
Hallo mikeleb!
Die Fehlermeldung lautet:
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: PrintRanges.
Vielen Dank, nochmal!
Gruss Ingo
Re: nur dann, einen bestimmten Bereich drucken, wenn in einer Zelle ein X
Verfasst: Mi, 08.01.2025 17:04
von F3K Total
Moin,
weiß nicht woher das Makro kommt, es funktioniert nicht,
ThisComponent.PrintRanges gibt es in AOO/LO nicht.
Folgendes Makro sollte funktionieren, aktuell für Tabellenblatt 1, kann hier geändert werden:
Code: Alles auswählen
Sub PrintIfXInCell(optional event) 'event ist die Zelle in der etwas geändert wird
Dim oDoc As Object
Dim oSheet As Object
Dim oRange As Object
Dim cell As Object
DIM oPrintareas(0) as new com.sun.star.table.CellRangeAddress
DIM printProp(0) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
' Aktuelles Dokument und Blatt abrufen
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' 0 für das erste Blatt
' Zelle I11 prüfen
oCell = oSheet.getCellByPosition(8,10) ' I11 entspricht Position (8, 10)
if ocell.queryintersection(event.RangeAddress).Count = 1 Then 'Es wurde in Zelle I11 etwas geändert
' Wenn in I11 ein "X" steht
If oCell.String = "X" Then
' Bereich A10:H72 zum Drucken festlegen
oRange = oSheet.getCellRangeByName("A10:H72")
oPrintareas(0)= oRange.Rangeaddress
' Druckbereich festlegen
oSheet.setPrintareas(oPrintareas)
' Drucken
oDoc.print(printProp)
else
' Wenn in I11 kein "X" steht
oSheet.setPrintareas(oPrintareas)'setze einen leeren Druckbereich
End If
endif
End Sub
Anbei eine Beispieldatei, in der beschrieben ist, wie das Makro eingebunden werden muss, damit nach dem Eintragen eines großgeschiebenen X der Druck sofort beginnt.
Gruß R
Re: nur dann, einen bestimmten Bereich drucken, wenn in einer Zelle ein X
Verfasst: Do, 09.01.2025 12:55
von little fingers
Hallo F3K Total!
Vielen, lieben Dank schon einmal dafür, dass Du mir diese Lösung gegeben hast, die wie beschrieben funktioniert!!!
Gibt es aber die Möglichkeit, per Mouseclick, ein Makro zu starten und es prüft, ob in der Tabelle 43, Zelle I11 per Formel ein X eingetragen ist,
dann den Bereich A10:H72 ausdruckt, dann prüft, ob in der Tabelle 43, Zelle I75 per Formel ein X eingetragen ist,
dann den Bereich A74:H136 ausdruckt?
Das würde mir die Arbeit total erleichtern!!!
Liebe Grüsse Ingo
Re: nur dann, einen bestimmten Bereich drucken, wenn in einer Zelle ein X
Verfasst: Do, 09.01.2025 17:23
von F3K Total
Moin,
weil ich heute gute Laune habe:
Code: Alles auswählen
Sub PrintIfXInCell
Dim oDoc As Object
Dim oSheet As Object
Dim oRange As Object
Dim cell As Object
DIM oPrintareas(0) as new com.sun.star.table.CellRangeAddress
DIM printProp(0) as new com.sun.star.beans.PropertyValue
printProp(0).name = "Wait"
printProp(0).Value = true
' Aktuelles Dokument und Blatt abrufen
oDoc = ThisComponent
oSheet = oDoc.Sheets(42) ' 0 für das erste Blatt
' Zelle I11 prüfen
oCell = oSheet.getCellByPosition(8,10) ' I11 entspricht Position (8, 10)
' Wenn in I11 ein "X" steht
If oCell.String = "X" Then
' Bereich A10:H72 zum Drucken festlegen
oRange = oSheet.getCellRangeByName("A10:H72")
oPrintareas(0)= oRange.Rangeaddress
' Druckbereich festlegen
oSheet.setPrintareas(oPrintareas)
' Drucken
oDoc.print(printProp)
else
' Wenn in I11 kein "X" steht
oSheet.setPrintareas(oPrintareas)'setze einen leeren Druckbereich
End If
oCell = oSheet.getCellByPosition(8,74) ' I75 entspricht Position (8, 74)
' Wenn in I75 ein "X" steht
If oCell.String = "X" Then
' Bereich A10:H72 zum Drucken festlegen
oRange = oSheet.getCellRangeByName("A74:H136")
oPrintareas(0)= oRange.Rangeaddress
' Druckbereich festlegen
oSheet.setPrintareas(oPrintareas)
' Drucken
oDoc.print(printProp)
else
' Wenn in I75 kein "X" steht
oSheet.setPrintareas(oPrintareas)'setze einen leeren Druckbereich
End If
End Sub
Beispiel anbei, die nächste Variante darfst du dir selber aus dem Hirn drücken!
EDIT: 10.01.2025 14:20, Xray oCell herausgenommen.
Gruß R
Re: nur dann, einen bestimmten Bereich drucken, wenn in einer Zelle ein X
Verfasst: Fr, 10.01.2025 08:43
von little fingers
@F3k Total
Vielen, liben Dank dafür!!!!!!!
Es klappt Super!!!
Ich habe nach der Fehlermeldung den Part
entfernt und jetzt macht das Makro, was es soll!!
Supi und Danke dafür.....Du hast mir sehr geholfen!!!!!!
Liebe Grüße
Ingo