VBA in Starcalc umwandeln?
Moderator: Moderatoren
-
- Beiträge: 7
- Registriert: Mi, 11.05.2011 21:23
VBA in Starcalc umwandeln?
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.
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.
Re: VBA in Starcalc umwandeln?
Hallo
Ich glaube nicht das der VBA- Code alleine in OOo läuft. Versuchs mal hiermit, (beachte die Kommentare im Code)
Gruß Karo
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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
-
- Beiträge: 7
- Registriert: Mi, 11.05.2011 21:23
Re: VBA in Starcalc umwandeln?
Danke schon mal werds gleich ausprobieren 

-
- Beiträge: 7
- Registriert: Mi, 11.05.2011 21:23
Re: VBA in Starcalc umwandeln?
Das ist ja schon super !!!!!!
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

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
Re: VBA in Starcalc umwandeln?
[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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: VBA in Starcalc umwandeln?
Hallo
Zwei Dumme mit beinahe den gleichen Gedanken:
"meine" letzten 4 Zeilen im if...end if -Block
Gruß Karo
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)
..
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
-
- Beiträge: 7
- Registriert: Mi, 11.05.2011 21:23
Re: VBA in Starcalc umwandeln?
An Karolus:
Perfekt
Merce vielmals.
Perfekt

Merce vielmals.