VBA in Starcalc umwandeln?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Lupo_12_67
Beiträge: 7
Registriert: Mi, 11.05.2011 21:23

VBA in Starcalc umwandeln?

Beitrag von Lupo_12_67 »

Hallo zusammen,
habe mir eine Datenbank in Excel mit folgendem VBA erstellt um Produktionssteuerung zu kontrollieren, jetzt habe ich ein VBA mit dem ich etwas anfangen kann, nun will ich das ganze in OpenOffice umsetzen da wir an verschiedenen Orten Arbeiten.Das ganze funktioniert so:
Ich habe zwei Tabellen eine mit "Aktuell" die andere mit "Erledigt" und jeweils 11 Spalten mit verschieden Daten wie Auftragsnummer, Bezeichnung, Kunde etc.. Die Datenbank sollte so funktionieren: wenn ich "ja" eingebe in Spalte J egal welche Zelle dann verschiebt er die ganze Zeile nach Tabelle2 und fügt es ans Ende der Liste an ohne dass er die vorherigen Einträge ändert oder sogar löscht sonst gehen Produktionsdaten verloren.
Geht das mit einem Makro? Wenn ja wie, mit Excell ist das ganz gut geworden aber wir benötigen jetzt OpenOffice und ich bin da nicht so ganz Fit.
Hier mal das VBA von Excel:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J:J")) Is Nothing Then
If Intersect(Target, Range("J:J")).Cells.Count = _
WorksheetFunction.CountIf(Intersect(Target, Range("J:J")), "ja") Then
With Range("J:J")
On Error Resume Next
With .Resize(.Rows.Count - 1).Offset(1).ColumnDifferences(.Find("")).EntireRow
.Copy Tabelle2.Cells(Rows.Count, 17).End(xlUp).Offset(1, -16)
.Delete
End With
On Error GoTo 0
End With
End If
End If
End Sub

Wäre Super wenn mir irgendwer Helfen könnte bin schon am verzweifeln.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: VBA in Starcalc umwandeln?

Beitrag von Karolus »

Hallo
Ich glaube nicht das der VBA- Code alleine in OOo läuft. Versuchs mal hiermit, (beachte die Kommentare im Code)

Code: Alles auswählen

Global oRange
Global oListener

Sub AddListener()      ' dem Ereignis "Dokument öffnen" zuordnen
	oListener = CreateUnoListener("Change_", "com.sun.star.util.XModifyListener")
	oRange = ThisComponent.Sheets("Tabelle1").getCellRangeByName("J1:J1000")'Tabellennamen anpassen
	oRange.addModifyListener(oListener)
End Sub

Sub RemoveListener()   ' dem Ereignis "Dokument wird geschlossen" zuordnen
	On Error Resume Next
	oRange.removeModifyListener(oListener)
End Sub

Sub Change_modified(aEvent)
	RemoveListener() 'Listener entfernen wg Endlosschleife	
orange = aEvent.source
oquellsheet = orange.Spreadsheet
osuche = orange.createSearchDescriptor
osuche.setSearchString( "ja" )
found = orange.findfirst(osuche)

if not isnull( found ) then
	row = found.getcelladdress.row
	ozielsheet = thisComponent.sheets( found.celladdress.sheet +1 ) 'die Tabelle *nach* der Quelltabelle !
	ocursor = ozielsheet.createcursor
	ocursor.gotoendofusedarea( false )
	zrow = ocursor.rangeaddress.endrow +1
	crange = oquellsheet.getCellRangebyPosition(0, row , 16, row).getRangeAddress
	oziel = ozielsheet.getcellbyposition(0, zrow ).getcelladdress
	ozielsheet.moveRange( oziel , crange ) 'Zeile verschieben 
	orange.rows().removebyIndex(row, 1 ) 'Quellzeile löschen
end if

	AddListener() 'Listener wieder einschalten

End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Lupo_12_67
Beiträge: 7
Registriert: Mi, 11.05.2011 21:23

Re: VBA in Starcalc umwandeln?

Beitrag von Lupo_12_67 »

Danke schon mal werds gleich ausprobieren :)
Lupo_12_67
Beiträge: 7
Registriert: Mi, 11.05.2011 21:23

Re: VBA in Starcalc umwandeln?

Beitrag von Lupo_12_67 »

Das ist ja schon super !!!!!! :D
Ein Problem habe ich noch, jetzt verschiebt das Makro die ganze Zeile incl. den Formaten nach Tabelle"Erledigt"(Tabelle2), und löscht mir die ganze Zeile raus, wie bekomme ich das hin das das Makro nur die Inhalte der Zeile verschiebt und aus Tabelle"Aktuell"(Tabelle1) nur die Inhalte löscht, aber die Formate und die Zeile behält also die Zeile nicht aus Tabelle"Aktuell"(Tabelle1) löscht. Denn die Formate benötige ich da Sie mit Drop Down Listen verknüpft und mit Farbfeldern gekennzeichnet sind, die ich aber in Tabelle"Erledigt" (Tabelle2) nicht benötige.
Wäre Super wenn Du mir dabei Helfen könntest.
Vielen Vielen Dank für die Hilfe
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: VBA in Starcalc umwandeln?

Beitrag von turtle47 »

[edit] [/edit]
Zuletzt geändert von turtle47 am Fr, 03.06.2011 23:38, insgesamt 1-mal geändert.
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: VBA in Starcalc umwandeln?

Beitrag von Karolus »

Hallo
Zwei Dumme mit beinahe den gleichen Gedanken:
"meine" letzten 4 Zeilen im if...end if -Block

Code: Alles auswählen

..
cRange = oquellsheet.getCellRangebyPosition(0, row , 16, row)
cArray = crange.getFormulaArray
ozielsheet.getcellRangebyPosition(0, zrow , 16 , zrow ).setFormulaArray( cArray )
cRange.clearContents(23)
..
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Lupo_12_67
Beiträge: 7
Registriert: Mi, 11.05.2011 21:23

Re: VBA in Starcalc umwandeln?

Beitrag von Lupo_12_67 »

An Karolus:

Perfekt :D
Merce vielmals.
Antworten