Hallo Dave,
auf Basis Deines letzten Posts:
Dave hat geschrieben:Übertragen brauche ich die Daten aus:
C4; normales Eingabefeld Inhalt ist eine Zahl (Ziel Tabelle2 A2)
F4; Sverweisfeld, Inhalt den ich brauche ist der Text (Ziel Tabelle2 B2)
E4; Wenn/Zeit Feld Inhalt zum Übertragen Datum und Zeit (Ziel Tabelle2 C2)
C7; Sverweisfeld, Inhalt den ich brauche ist der Text (Ziel Tabelle2 D2)
I4; Wenn/Zeit Feld Inhalt zum Übertragen Datum und Zeit (Ziel Tabelle2 E2)
Anschließend sollte in Tabelle2 eine Zeile oberhalb von Zeile 2 eingefügt werden, damit Zeile 2 wieder frei ist für die nächsten Einträge.
Und dann sollten in Tabelle 1 die Einträge von C4, H5, H8 und A10 gelöscht werden und zum Schluss der Cursor wieder in C4 zurückspringen.
habe ich das Makro etwas ausgedünnt.
Code: Alles auswählen
REM ***** BASIC *****
Sub Datenliste2
oDoc = ThisComponent
oCC = oDoc.CurrentController
' Hier ggf. die Tabellenblattnamen anpassen
oSheet1 = oDoc.Sheets.getByName("Tabelle1")
oSheet2 = oDoc.Sheets.getByName("Tabelle2")
REM ------------------------------------------------------------------
REM C4; normales Eingabefeld Inhalt ist eine Zahl (Ziel Tabelle2 A2)
REM C4 --> A2
REM Zahl kopieren
oSheet2.getCellRangeByName("A2").Value=oSheet1.getCellRangeByName("C4").Value
REM ------------------------------------------------------------------
REM E4; Wenn/Zeit Feld Inhalt zum Übertragen Datum und Zeit (Ziel Tabelle2 C2)
REM E4 --> C2
REM Nur Werte (Datum und Uhrzeit) kopieren
With oSheet2
.getCellRangeByName("C2").Value = oSheet1.getCellRangeByName("E4").Value
REM Zelle formatieren (Datum und Uhrzeit)
' 50 = TT.MM.JJ HH:MM
' 107 = TT.MM.JJJJ HH:MM
.getCellRangeByName("C2").NumberFormat=50
REM Zell-Hintergrundfarbe
' .getCellRangeByName("C2").CellBackColor=16777126 ' Farbangabe per long
' .getCellRangeByName("C2").CellBackColor=RGB(255,255,166) ' Farbangabe per RGB(n,n,n)
End With
REM ------------------------------------------------------------------
REM F4; Sverweisfeld, Inhalt den ich brauche ist der Text (Ziel Tabelle2 B2)
REM F4 --> B2
REM Text kopieren
oSheet2.getCellRangeByName("B2").String=oSheet1.getCellRangeByName("F4").String
REM ------------------------------------------------------------------
REM C7; Sverweisfeld, Inhalt den ich brauche ist der Text (Ziel Tabelle2 D2)
REM Text --> C7 --> D2
REM Text kopieren
oSheet2.getCellRangeByName("D2").String=oSheet1.getCellRangeByName("C7").String
REM ------------------------------------------------------------------
REM I4; Wenn/Zeit Feld Inhalt zum Übertragen Datum und Zeit (Ziel Tabelle2 E2)
REM I4 --> E2
REM Nur Werte (Datum und Uhrzeit) kopieren
With oSheet2
.getCellRangeByName("E2").Value = oSheet1.getCellRangeByName("I4").Value
REM Zelle formatieren (Datum und Uhrzeit)
' 50 = TT.MM.JJ HH:MM
' 107 = TT.MM.JJJJ HH:MM
.getCellRangeByName("E2").NumberFormat=50
REM Zell-Hintergrundfarbe
' .getCellRangeByName("E2").CellBackColor=16777126 ' Farbangabe per long
' .getCellRangeByName("E2").CellBackColor=RGB(255,255,166) ' Farbangabe per RGB(n,n,n)
End With
REM ------------------------------------------------------------------
REM Eine Zeile innerhalb Tabelle2 oberhalb Zeile 2 einfügen
oRows=oSheet2.getRows
' Zeile einfügen
' 0 = Spalte A
' 1 = Zeile 2
oRows.insertbyindex(0,1)
REM ------------------------------------------------------------------
REM Zellinhalte leeren.
REM Betrifft Formeln, Zahlen und Strings, keine Formate.
' Tabelle1 Zellen C4;H5;H8 und A10 leeren
oZiel = oSheet1.getCellRangeByName("A10")
oZiel.String=""
oZiel = oSheet1.getCellRangeByName("C4")
oZiel.String=""
oZiel = oSheet1.getCellRangeByName("H5")
oZiel.String=""
oZiel = oSheet1.getCellRangeByName("H8")
oZiel.String=""
REM ------------------------------------------------------------------
REM Cursor positionieren
REM Position (2,3) =
REM 2 = Spalte C
REM 3 = Zeile 4
oCell = oSheet1.getCellByPosition(2,3)
oCC.Select(oCell)
REM ------------------------------------------------------------------
REM Programmende
Msgbox "Aktion abgeschlossen!" & CHR(10) & _
"Das Programm wird beendet", 64, "Programmende"
End Sub
Es werden nur Zahlen, Text und Datum/Uhrzeit in Tabelle2 geschrieben.
Ausser für die Zellen (Ziel Tabelle2 C2) und (Ziel Tabelle2 E2), beides Datum/ Uhrzeit,
werden keine Zellformatierungen durchgeführt.
Letzteres ist erforderlich, da ein Datum immer eine Dezimalzahl ist und per Value-Anweisung in Tabelle2 geschrieben wird.
43950,5733394097 = 29.04.20 13:45
Vor dem Komma = 43950 Tage nach dem Datum 30.12.1899 ist das heutige Datum
Nach dem Komma die Uhrzeit --> 0,5733394097
Wenn Du die Jahreszahl lieber 4-stellig augegeben hättest, dann muss im Makro Numberformat wie folgt geändert werden:
Dieses ändern:
Code: Alles auswählen
REM Zelle formatieren (Datum und Uhrzeit)
' 50 = TT.MM.JJ HH:MM
' 107 = TT.MM.JJJJ HH:MM
.getCellRangeByName("E2").NumberFormat=50
in:
Code: Alles auswählen
REM Zelle formatieren (Datum und Uhrzeit)
' 50 = TT.MM.JJ HH:MM
' 107 = TT.MM.JJJJ HH:MM
.getCellRangeByName("E2").NumberFormat=107
Also Formatcode 50, in 107 ändern.