Unterste Zelle mit Inhalt in einem Bereich finden

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Unterste Zelle mit Inhalt in einem Bereich finden

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von Thomas Mc Kie » Mi, 01.03.2017 14:54

Für 2.
Bitte mal zu Zellen-Formatierung und dort bei Zahlen in der Programmhilfe nachlesen/googeln. Du kannst Zellen problemlos so formatieren, dass "kein Eintrag" als 0 angezeigt wird.
Oder (dann müsste ich mich ins Makro reinlesen) du lässt bei einem Übertrag von 0 auch wirklich eine 0 in die Zelle schreiben. Ich gehe mal von aus, das das Makro erste die Zelle leert und wenn der Übertrag Null ist, dann auch nichts reinschreibt. Eine Null würde nämlich standardmäßig angezegt, da es sich ja um eine Zahl handelt.

Grüße
Thomas

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von snailmed » Di, 28.02.2017 16:19

Moin,

in der Anwendung nach 10 Tagen stellen sich leider noch zwei (hoffentlich kleine?) Probleme dar. Vielleicht kann jemand helfen?

1. Da für die Wochenendeintragungen das Datum in Spalte B rückwirkend geändert wird, fällt die Formel raus (für B22: =WENN(A22="";"";WENN(ZELLE("TYPE";B22)="v";B22;HEUTE()))). Am Ende des Monats wird das Dokument ja wieder auf Null gesetzt und nur der Übertrag übertragen. Das funktioniert auch bestens, nur eben nicht für die Zellen, bei denen händisch das Datum geändert und die Formel damit gelöscht wurde.
Da ich nicht vertraut bin mit der Programmierung von Makros, frage ich mich, ob es eine Möglichkeit gibt, in das bestehende Makro einen Code einzubauen, der die Zeilen B22-58 entsprechend wieder mit der Formel belegt.

2. Aufgefallen ist uns, dass in den Zellen keine Null (also "0") angezeigt wird. Zum Beispiel, wenn der Bestand "0" ist oder als Übertrag eine Null eingetragen wird, bleibt die Zelle einfach leer.

Viele Grüße
Snailmed

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von snailmed » So, 19.02.2017 09:24

Noch einmal vielen Dank an alle!
Das Dokument läuft jetzt einwandtfrei und alle sind glücklich über die Arbeitserleichterung.

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von F3K Total » Fr, 17.02.2017 11:00

Es ist so langsam an der Zeit, dass du die Hilfe (F1) kennen lernst, Suchbegriff: Makrosicherheit
Gruß R

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von nikki » Fr, 17.02.2017 11:00

Hallo,
siehe Extras/Einstellungen.../OpenOffice/Sicherheit
2017-02-17 10_57_37-Makro Sicherheit.gif
2017-02-17 10_57_37-Makro Sicherheit.gif (14.15 KiB) 8282 mal betrachtet
Dort gegebenenfalls auf den Hilfe-Button klicken.

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von snailmed » Fr, 17.02.2017 08:15

Bei mir zu Hause läuft es jetzt nach Änderung der Makrosicherheitsstufe! Werde es nachher in der Praxis ausprobieren. Danke für den Hinweis!
Gibt es denn die Möglichkeit, das Makro als vertrauenswürdig zu kennzeichnen und dann die höhere Sicherheitsstufe zu wählen? Dann müsste man zu Beginn nicht immer auf "Makros aktivieren" klicken.
Und mir fällt auf, dass zu Beginn ebenfalls immer der Hinweis kommt "Das Dokumen enthält Makros...", was man wegklicken muss. Kann man das auch einstellen?

Ich habe echt viele Fragen...aber ich lerne dazu!

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von F3K Total » Do, 16.02.2017 20:08

Hallo,
ich habe die Datei gerade noch einmal ausprobiert, funktioniert alles wie es soll.
Kann es sein, das du das Ausführen von Makros nicht zulässt?
Damit das Makro laufen darf, stellst du unter Extras/Optionen/Openoffice/Sicherheit/Makrosicherheit mindestens die Stufe "Mittel" ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Gruß R

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von snailmed » Do, 16.02.2017 20:02

Vielen Dank für die Erstellung des neuen Makros, leider passiert bei mir immer noch nichts, wenn ich es ausführe (weder das Löschen der Zellen noch das Hochzählen der Blattnummer). Woran kann das liegen?

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von F3K Total » Do, 16.02.2017 17:26

Hallo,
jetzt hast du die Matrixformel zerschossen, habe ich neu eingepflegt.
Ausserdem noch das Makro bereinigen wie folgt beschleunigt:

Code: Alles auswählen

Sub bereinigen()
    tc = ThisComponent
    nColumns = array(0,2,3,5)'Spalten A,C,D,F
    For i = 0 To tc.Sheets.Count()-2   '-2 damit die Vorlage nicht verändert wird
        With tc.Sheets(i)
            .unprotect("btm")
            .getCellRangeByName("E20").Value = .getCellRangeByName("E60").Value
            .getCellRangeByName("B64").Value = .getCellRangeByName("B64").Value + 1
            for j = 0 to 3
                oRange = .getCellrangeByPosition(nColumns(j),21,nColumns(j),57)'A22:A58
                oRange.clearContents(5)'Value(1) & String(4)
            next j
            .protect("btm")
        End With
    Next i 
End Sub
Mit

Code: Alles auswählen

oRange.clearContents
wird der Inhalt eines Zellbereiches gelöscht, das geht deutlich schneller als die Zellen einzeln zu durchwandern.
Die Tabellenblätter sind auch wieder mit Passwort geschützt.
Für ein neues Thema,
snailmed hat geschrieben: Do, 16.02.2017 13:00 Wenn Ihr sonst noch schlaue Ideen habt ...
eröffne bitte einen neuen Thread.
Gruß R
Dateianhänge
BTM_patientenbezogen.ods
(29.99 KiB) 180-mal heruntergeladen

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von snailmed » Do, 16.02.2017 13:00

Bitte...ich brauche nochmal Eure Hilfe!
BTM_patientenbezogen.ods
(29.57 KiB) 107-mal heruntergeladen
- Mein Makro läuft nicht mehr...es passiert einfach gar nichts.

- Die E60 zeigt immer noch den Fehler Err.502.

Wenn Ihr sonst noch schlaue Ideen habt bezüglich einer weiteren Vereinfachung, immer gerne (z.B. das Drucken aller Tabellen bis auf "Vorlage_BTM" gleich ins Makro mit übernehmen?)

Ich bin da einfach noch nicht ganz eingefuchst...

Ich danke Euch im Voraus!

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von lorbass » Mi, 15.02.2017 19:45

snail hat geschrieben: Mi, 15.02.2017 08:33 - Und weiß zufällig jemand, wo die Zeilen 1+2 geblieben sind? Meine Tabelle beginnt mit Zeile 3...?
Die Zeilen hat irgendjemand irgendwann ausgeblendet. Zum Wiederanzeigen:
  1. Tabellenschutz entfernen.
  2. Eine beliebige Spalte(!) oder die ganze Tabelle (Strg+A) selektieren.
  3. Menüpunkt Einblenden im Kontextmenü (Rechstklick!) der Zeilenköpfe (!) oder Format → Zeile → Anzeigen wählen.
Gruß
lorbass

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von Stephan » Mi, 15.02.2017 17:44

ich korrigiere mich mal selbst, ich glaube das Makro muss so aussehen und nicht so wie ich es heute Mittag gepostet hatte:

Code: Alles auswählen

Sub bereinigen()
	tc = ThisComponent
	For i = 0 To tc.Sheets.Count()-1
		With tc.Sheets(i)
			.unprotect("")
			For j = 29 To 61 'A30:A62
				.getCellByPosition(0,j).FormulaLocal = ""
				
				'-->die "g" entfernen die die bedingte Formatierung triggern:
				.getCellByPosition(6,j).FormulaLocal = ""
				
				'-->evtl. nun gleich noch die überflüssigen Werte löschen:
				.getCellByPosition(2,j).FormulaLocal = ""
				.getCellByPosition(3,j).FormulaLocal = ""
			Next j
			.getCellRangeByName("E28").Value = .getCellRangeByName("E64").Value
			.getCellRangeByName("F4").Value = .getCellRangeByName("F4").Value+1
			.protect("")
		End With
	Next i 
End Sub
bitte den letzten Kommentar im Makro beachten, denn die Zeilen:

Code: Alles auswählen

.getCellByPosition(2,j).FormulaLocal = ""
.getCellByPosition(3,j).FormulaLocal = ""
sind evtl. überflüssig wenn C30:D62 tatsächlich händisch gelöscht werden sollen.


Gruß
Stephan

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von F3K Total » Mi, 15.02.2017 16:51

Hallo
Gast hat geschrieben: Mi, 15.02.2017 08:33 - Ins Makro müsste noch eingebaut werden, dass die entsprechenden Zellen vor dem löschen wieder auf "entsperrt" gesetzt werden, sonst können sie nicht zurück gesetzt werden.
Welchen Befehl brauche ich da im Makro-Code?
um ein Tabellenblatt zu entsperren oder zu sperren gibt es

Code: Alles auswählen

.unprotect("Password")
.protect("Password")
Dann sollte das Makro von Stephan so funktionieren:

Code: Alles auswählen

Sub bereinigen()
	tc = ThisComponent
	For i = 0 To tc.Sheets.Count()-1
		With tc.Sheets(i)
		        .unprotect("")'wenn kein Passwort vergeben wurde
			.getCellRangeByName("E28").Value = .getCellRangeByName("E64").Value
			.getCellRangeByName("F4").Value = .getCellRangeByName("F4").Value+1
			For j = 29 To 61 'A30:A62
				.getCellByPosition(0,j).FormulaLocal = ""
			Next j
		        .protect("")'wenn kein Passwort vergeben wurde
		End With
	Next i 
End Sub
Gruß R

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von Stephan » Mi, 15.02.2017 11:55

- Ins Makro müsste noch eingebaut werden, dass die entsprechenden Zellen vor dem löschen wieder auf "entsperrt" gesetzt werden, sonst können sie nicht zurück gesetzt werden.
Welchen Befehl brauche ich da im Makro-Code?
eigentlich müssen doch nur die Zellinhalte geleert werden und die bedingte Formatierung regelt alles, kann "F3K Total" bitte die Richtigkeit dieses Vorgehens bestätigen?

Wenn meine Annahme stimmt, sollte folgende Codeergänzung für das Makro die Arbeit tun:

Code: Alles auswählen

		With tc.Sheets(i)
			...
			For j = 29 To 61 'C30:E62
				.getCellByPosition(2,j).FormulaLocal = ""
				.getCellByPosition(3,j).FormulaLocal = ""
				.getCellByPosition(4,j).FormulaLocal = ""
			Next j
		End With
Gruß
Stephan

Re: Unterste Zelle mit Inhalt in einem Bereich finden

von paljass » Mi, 15.02.2017 09:38

Hi,
"=INDEX(E24:E60;MAX(ISTZAHL(E24:E60)*ZEILE(E24:E60))-23)" führt immer zu dem Fehler "Err. 502".
Es handelt sich um eine Matrixformel, d.h. du musst die Eingabe mit Strg-Umschalt-Enter abschließen.

Gruß
paljass

Nach oben