Seite 1 von 1

Zeile nach unten verschieben

Verfasst: Do, 11.03.2010 12:12
von diggoli
Hallo,

hier: viewtopic.php?f=2&t=36755 bereits andiskutiert, möchte ich über eine Auswahlfeld(in der ersten Spalte) die Zahl 1-10 auswählen und dann dementsprechend die ganze Zeile einfärben. Wenn die Zelle einen bestimmte Zahl bekommt, soll zusätzlich die ganze Zeile nach unten, mit einem Abstand von 5 Zeilen, hinter den letzten Datensatz gehängt werden.

Ich hoffe ihr könnt mir helfen.

Re: Zeile nach unten verschieben

Verfasst: Fr, 12.03.2010 16:06
von diggoli
kann mir denn niemand helfen, bzw. sagen wo ich mir das erforderliche Wissen anlesen kann :(

Re: Zeile nach unten verschieben

Verfasst: Fr, 12.03.2010 17:58
von balu
Hallo diggoli
wo ich mir das erforderliche Wissen anlesen kann
Den ersten Beitrag von Stephan Informationen zur StarBasic-Programmierung hier im Forum hast Du schon gesehen, und auch durchgestöbert?

Und dann kann ich dir noch die Seiten von Michael empfehlen.

Vielleicht ist ja etwas passendes dabei, wenn Du die SuFu mal befragst.

Da ich mich mit Makros nicht so auskenne, kann ich dir auch nicht weiterhelfen.


Gruß
balu

Re: Zeile nach unten verschieben

Verfasst: Sa, 13.03.2010 15:11
von diggoli
Leider bringt mich das nicht viel weiter :-( brauche wohl einen größeren Denkanstoß :-)

Re: Zeile nach unten verschieben

Verfasst: Mo, 15.03.2010 17:49
von Charly
Hallo Diggoli!

Ich würde dir gerne helfen, aber mir reichen die Informationen nicht aus.

Vielleicht kannst du eine Testdatei mit ein paar Zeilen erstellen und hier hochladen. Insbesondere interressieren mich die Auswahlfelder in Spalte A. Ich muss ja mit dem Makro auf die Daten dieser Felder zugreifen können.

Soll die Einfärbung auch über das Makro erfolgen. Dann in deine Testdatei 10 Zellvorlagen mit den gewünschten Farben kreieren.

Ist mit verschieben einer Zeile gemeint, dass die ursprüngliche Zeile gelöscht werden muss und 5 Zeilen nach dem Ende wieder eingefügt werden soll (vier Leerzeilen)?

Handelt es sich immer nur um eine Zeile oder kann es auch sein, dass mehrere gleichzeitig verschoben werden sollen?

Ist der Start des Makros über einen Button in Ordnung?

Gruß
Chary

Re: Zeile nach unten verschieben

Verfasst: Mo, 15.03.2010 21:40
von bst
Abend auch,

mal ein Versuch. Nimm ein Listenfeld aus Formular-Steuerelemente. Ordne dem eine Liste mit den Zahlen 1-10 unter Kontrollfeld-Daten zu. Ordne dem unter Kontrollfeld-Ereignisse-Modifiziert die Sub lstAuswahl_Change zu.

HTH, Bernd
--

Code: Alles auswählen

Sub lstAuswahl_Change(oEvt As Object)
	nSrc = oEvt.Source.Model.selectedItems(0)

	oSheet = ThisComponent.sheets(0)
	oCellCursor = oSheet.createCursor
    oCellCursor.GotoEndOfUsedArea(False)
    nDst = oCellCursor.getRangeAddress().endRow	+ 5
    
	oSheet.Rows.CellBackColor = -1

	oSrcRange = oSheet.getCellRangeByPosition(0, nSrc, 255, nSrc).getRangeAddress
	oDstCell  = oSheet.getCellbyPosition(0, nDst).getCellAddress
	oSheet.copyRange(oDstCell, oSrcRange)

	oSheet.rows(nSrc).CellBackColor = RGB(255,255,0)
End Sub

Re: Zeile nach unten verschieben

Verfasst: Di, 16.03.2010 09:26
von diggoli
Danke, nur leider kann ich kein Kontrollfeld einfügen, es wird mir in der Menüzeile nur schattiert angezeigt. Kann es somit nicht ausprobieren :(
Hab dem Listenfeld die Zahlen 1-10 über Güktigkeit zugewiesen, aber weiter kommich leider nicht.

Re: Zeile nach unten verschieben

Verfasst: Di, 16.03.2010 10:05
von bst
Hi,

- Ansicht-Symbolleisten-Formular Steuerelemente
- Entwurfsmodus oben rechts einschalten
- Listenfeld in Zelle ziehen
- Assi abbrechen
- rechte Maustaste Kontrollfeld, dort die Zuordnungen treffen
- Entwurfsmodus abschalten

cu, Bernd

Re: Zeile nach unten verschieben

Verfasst: Di, 16.03.2010 20:15
von diggoli
bst hat geschrieben:Abend auch,

mal ein Versuch. Nimm ein Listenfeld aus Formular-Steuerelemente. Ordne dem eine Liste mit den Zahlen 1-10 unter Kontrollfeld-Daten zu. Ordne dem unter Kontrollfeld-Ereignisse-Modifiziert die Sub lstAuswahl_Change zu.

HTH, Bernd
Soweit so gut :-),
allerdings schneidet der die Zeile nicht aus und färbt immer die Zeile ein die man über die Zahl anwählt. Also bei 4 zeile 4 unter dem Feld usw.
geht das nicht auch über die Gültigkeit? Ich kann ja nicht 100 oder gar 1000 von Listenfeldern machen. Brauche diese Auswahl in jeder Zeile.

Re: Zeile nach unten verschieben

Verfasst: Di, 16.03.2010 22:00
von bst
Abend diggoli,
allerdings schneidet der die Zeile nicht aus
ja, ich hatte das nicht weiter als wichtig angesehen sondern vermutet es geht Dir um das Prinzip wie man das überhaupt machen kann ;-)
und färbt immer die Zeile ein die man über die Zahl anwählt
So hatte ich denn Deine Anfrage verstanden.
geht das nicht auch über die Gültigkeit?
Möglich, darüber habe ich noch nicht näher nachgedacht.
Ich kann ja nicht 100 oder gar 1000 von Listenfeldern machen. Brauche diese Auswahl in jeder Zeile.
Hilfe, wozu denn? M.E. sollte doch eine einzige Auswahlliste reichen, ggf. lasse die halt auf die aktuelle gewählte Zelle losgehen.

Oder aber mache das denn vielleicht besser gleich im Kontextmenü der Zelle.

cu, Bernd

Re: Zeile nach unten verschieben

Verfasst: Mi, 17.03.2010 09:32
von diggoli
Hallo,

hast recht, habe das alles jetztz nochmals umgeworfen da es nur für einen bestimmten Typ an Tabelle in Frage kam. Danke Trortzdem für die super Hilfe.
Nun aber eine neue Frage: Ich habe über Gültigkeit eine ja/nein Auswahl erzeugt und möchte das die Maus bei ja in eine bestimmte Spalte in der gleichen Zeile spring. Machbar?

Gruss diggoli

Re: Zeile nach unten verschieben

Verfasst: Mi, 17.03.2010 12:43
von bst
Hi diggoli,

möglicherweise geht das auch anders, ich bin denn selber noch OOo Einsteiger...

Was Du versuchen könntest ist es einen Modify-Listener zu installieren, dort vielleicht noch auf Ja/Nein prüfen und den Cursor dann zu positionieren.

Du musst hier die Sub AddListener einmal aufrufen, mache das ggf. automatisch beim Öffnen des Dokumentes.

HTH, Bernd
--

Code: Alles auswählen

REM  *****  BASIC  *****

Option Explicit

Global oRange
Global oListener

Const LISTENER_TABLE = "Tabelle1"	' die zu überwachende Tabelle
Const LISTENER_RANGE = "A2:A99"		' der zu überwachende Bereich

Sub AddListener()
	oListener = CreateUnoListener("Change_", "com.sun.star.util.XModifyListener")
    oRange = ThisComponent.Sheets(LISTENER_TABLE).getCellRangeByName(LISTENER_RANGE)
    oRange.addModifyListener(oListener)
End Sub

Sub RemoveListener()
    On Error Resume Next
    oRange.removeModifyListener(oListener)
End Sub

Sub Change_modified()
	dim oCell as Object, oView as Object, oSheet as Object,oNewCell as Object
	
	oCell = ThisComponent.getCurrentSelection
	if oCell.supportsService("com.sun.star.sheet.SheetCell") Then ' eine einzelne Zelle
		oSheet = ThisComponent.currentcontroller.activesheet
		oNewCell = oSheet.getCellByPosition(5, oCell.getRangeAddress.StartRow) ' Gehe in Spalte F
   		oView =  ThisComponent.CurrentController
   		oView.Select(oNewCell)
	endif
End Sub