VBA zu basic übersetzen
Moderator: Moderatoren
VBA zu basic übersetzen
Hallo Leute,
ich habe ein riesen Problem die zwei Zeilen von meinem Code für OO zu übersetzen. Ich hoffe hier kann mir jemand helfen!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Not IsEmpty(Cells(Target.Row, 2)) Then
Cells(Target.Row, 3) = Now
Else: Cells(Target.Row, 3) = ""
End If
End If
End Sub
Im Prinzip soll wenn in einer zelle etwas steht, neben dran das datum mit uhrzeit erscheinen.
Danke
ich habe ein riesen Problem die zwei Zeilen von meinem Code für OO zu übersetzen. Ich hoffe hier kann mir jemand helfen!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Not IsEmpty(Cells(Target.Row, 2)) Then
Cells(Target.Row, 3) = Now
Else: Cells(Target.Row, 3) = ""
End If
End If
End Sub
Im Prinzip soll wenn in einer zelle etwas steht, neben dran das datum mit uhrzeit erscheinen.
Danke
Re: VBA zu basic übersetzen
Morgen,
nimm einen ModifyListener und weise dessen Add- sowie Remove-Routinen via Menü Extras-Anpassen den Ereignissen "Dokument öffnen" bzw. "Dokument wird geschlossen" zu.
HTH, Bernd
--
nimm einen ModifyListener und weise dessen Add- sowie Remove-Routinen via Menü Extras-Anpassen den Ereignissen "Dokument öffnen" bzw. "Dokument wird geschlossen" zu.
HTH, Bernd
--
Code: Alles auswählen
Option Explicit
Global oRange
Global oListener
Sub AddListener() ' dem Ereignis "Dokument öffnen" zuordnen
oListener = CreateUnoListener("Change_", "com.sun.star.util.XModifyListener")
oRange = ThisComponent.Sheets("Tabelle1").getCellRangeByName("B1:B65536")
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)
Dim oAddress As Object, oSheet as Object, iRow as integer, iCol as integer
oSheet = aEvent.Source.SpreadSheet
oAddress = ThisComponent.getCurrentSelection.RangeAddress
iCol = oAddress.StartColumn
for iRow = oAddress.StartRow to oAddress.EndRow
if oSheet.getCellByPosition(iCol, iRow).String = "" Then
oSheet.getCellByPosition(iCol + 1, iRow).String = ""
else
oSheet.getCellByPosition(iCol + 1, iRow).String = now
endif
next
End Sub
Re: VBA zu basic übersetzen
Es tut mir leid, ich kann leider überhaupt nichts damit anfangen.
Aber danke für die Mühe
Aber danke für die Mühe
Re: VBA zu basic übersetzen
Hi,
versuche es mal hiermit.
cu, Bernd
versuche es mal hiermit.
cu, Bernd
- Dateianhänge
-
- ChangeEreignis.ods
- (9.22 KiB) 257-mal heruntergeladen
Re: VBA zu basic übersetzen
Vielen Dank hat geklapt!!!
Re: VBA zu basic übersetzen
Hallo Bernd,
ich hab noch eine Frage, und zwar, wenn ich dieses Marko bei mehreren Tabellenblättern anwenden will geht es nicht. habe zwar probiert die namen einzutragen, nützt aber nichts.
oRange = ThisComponent.Sheets("Tabelle1", "Tabelle2", "Tabelle3").getCellRangeByName("B1:B65536")
Vom Aufbau wären alle Blätter gleich.
Danke
ich hab noch eine Frage, und zwar, wenn ich dieses Marko bei mehreren Tabellenblättern anwenden will geht es nicht. habe zwar probiert die namen einzutragen, nützt aber nichts.
oRange = ThisComponent.Sheets("Tabelle1", "Tabelle2", "Tabelle3").getCellRangeByName("B1:B65536")
Vom Aufbau wären alle Blätter gleich.
Danke
Re: VBA zu basic übersetzen
Hi,
keine Ahnung ob so etwas möglich ist?
Mit drei unterschiedlichen Ranges scheint das hier zu funktionieren solange Du nicht gleichzeitig in mehreren Tabellen änderst.
Die Sub Change_modified muss (dann) nicht angepasst werden.
cu, Bernd
--
keine Ahnung ob so etwas möglich ist?
Mit drei unterschiedlichen Ranges scheint das hier zu funktionieren solange Du nicht gleichzeitig in mehreren Tabellen änderst.
Die Sub Change_modified muss (dann) nicht angepasst werden.
cu, Bernd
--
Code: Alles auswählen
Global oRange(0 to 2)
Global oListener
Sub AddListener() ' dem Ereignis "Dokument öffnen" zuordnen
dim i as integer
oListener = CreateUnoListener("Change_", "com.sun.star.util.XModifyListener")
for i = 0 to 2
oRange(i) = ThisComponent.Sheets(i).getCellRangeByName("B1:B65536")
oRange(i).addModifyListener(oListener)
next
End Sub
Sub RemoveListener() ' dem Ereignis "Dokument wird geschlossen" zuordnen
dim i as integer
On Error Resume Next
for i = 0 to 2
oRange(i).removeModifyListener(oListener)
next
End Sub
Re: VBA zu basic übersetzen
ich verstehe zwar so gut wie gar nicht was hier geschieht aber ich bin dir sehr dankbar.
hat super funktioniert!!!
gruß Fabian
hat super funktioniert!!!
gruß Fabian
Re: VBA zu basic übersetzen
Hallo, ich bin neu hier und habe mir mal das Wissen von hier zu Nutze gemacht.
Habe das macro von "bst" bei mir erfolgreich im Einsatz. Es arbeitet über 11 "baugleiche" Tabellen tadellos.
Nun habe ich das Problem das ich das auch in Tabelle 12 nutzen will, diese aber total anders aufgebaut ist.
Also es sind andere Zellen zu überwachen.
Wie kann ich diese in das macro einbauen, bzw. geht das überhaupt ??
Mein Können ist aber arg begrenzt, will heißen ich bin am Anfang des Lernens.
Mit einem Beispiel könnte ich das sicher einigermaßen verstehen.
Fred
Habe das macro von "bst" bei mir erfolgreich im Einsatz. Es arbeitet über 11 "baugleiche" Tabellen tadellos.
Nun habe ich das Problem das ich das auch in Tabelle 12 nutzen will, diese aber total anders aufgebaut ist.
Also es sind andere Zellen zu überwachen.
Wie kann ich diese in das macro einbauen, bzw. geht das überhaupt ??
Mein Können ist aber arg begrenzt, will heißen ich bin am Anfang des Lernens.
Mit einem Beispiel könnte ich das sicher einigermaßen verstehen.
Fred
Re: VBA zu basic übersetzen
Hi Fred,
Du könntest das mal so ähnlich versuchen, ungetestet.
HTH, Bernd
--
Du könntest das mal so ähnlich versuchen, ungetestet.
HTH, Bernd
--
Code: Alles auswählen
Global oRange(0 to 11)
Global oListener
Global oListenerSub AddListener() ' dem Ereignis "Dokument öffnen" zuordnen
dim i as integer
oListener = CreateUnoListener("Change_", "com.sun.star.util.XModifyListener")
for i = 0 to 10
oRange(i) = ThisComponent.Sheets(i).getCellRangeByName("B1:B65536")
oRange(i).addModifyListener(oListener)
next
oRange(11) = ThisComponent.Sheets(11).getCellRangeByName("D10:F44")
oRange(11).addModifyListener(oListener)
End Sub
Re: VBA zu basic übersetzen
Hallo bst
Habe das mal ausgeführt, geht so wie es soll.
Dafür erst mal meinen Dank.
Ein Frage habe ich noch dazu, wie muss das aufgebaut werden, um 2 oder mehr getrennte Bereiche in einer Tabelle
zu überwachen ?
Kannst du mir dabei noch mal helfen.
gruß vom zufriedenen Fred.
Habe das mal ausgeführt, geht so wie es soll.
Dafür erst mal meinen Dank.
Ein Frage habe ich noch dazu, wie muss das aufgebaut werden, um 2 oder mehr getrennte Bereiche in einer Tabelle
zu überwachen ?
Kannst du mir dabei noch mal helfen.
gruß vom zufriedenen Fred.
Re: VBA zu basic übersetzen
Hi,
versuche das mal so:
HTH, Bernd
versuche das mal so:
Code: Alles auswählen
oRange(n) = ThisComponent.Sheets(4711).getCellRangeByName("D10:D20")
oRange(n).addModifyListener(oListener)
oRange(n+1) = ThisComponent.Sheets(4711).getCellRangeByName("E30:E40")
oRange(n+1).addModifyListener(oListener)
oRange(n+2) = ThisComponent.Sheets(4711).getCellRangeByName("F50:F60")
oRange(n+2).addModifyListener(oListener)
Re: VBA zu basic übersetzen
Hallo Bernd
habe das ausprobiert, ging dann wenn ich's so schreibe.
Danke nochmals für deine Zeit, jetzt habe ich erst mal um weiter zu kommen.
gruß fred
habe das ausprobiert, ging dann wenn ich's so schreibe.
Code: Alles auswählen
Sub AddListener() ' dem Ereignis "Dokument öffnen" zuordnen
dim i as integer
oListener = CreateUnoListener("Change_", "com.sun.star.util.XModifyListener")
for i = 0 to 2
oRange(i) = ThisComponent.Sheets(i).getCellRangeByName("A1:A65536")
oRange(i).addModifyListener(oListener)
next
oRange(3) = ThisComponent.Sheets(3).getCellRangeByName("C1:C44")
oRange(3).addModifyListener(oListener)
oRange(3) = ThisComponent.Sheets(3).getCellRangeByName("F1:F20")
oRange(3).addModifyListener(oListener)
oRange(3) = ThisComponent.Sheets(3).getCellRangeByName("B20:B22")
oRange(3).addModifyListener(oListener)
gruß fred