Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Datumsanzeige von "Daten aktualisieren"

Betrifft: Datumsanzeige von "Daten aktualisieren" von: Markus
Geschrieben am: 28.07.2014 09:50:05

Hallo,

ich habe in Excel eine Microsoft Query zu einer anderen Datenquelle erstellt. Sobald ich in Excel auf DATEN - Alle Aktualisieren drücke wird diese Query aktualisiert. Ist es möglich via Makro oder ähnlichem das Datum der letzten Aktualisierung anzeigen zu lassen ? Also ich meine nicht zuletzt geändert oder zuletzt gespeichert.... Sondern "nur" zuletzt aktualisiert...



gruss Markus

  

Betrifft: AW: Datumsanzeige von "Daten aktualisieren" von: Nepumuk
Geschrieben am: 28.07.2014 10:00:51

Hallo,

klar, du brauchst nur in einer Klasse des QueryTable das AfterRefresh-Event abfangen.

Sieh: http://www.office-loesung.de/ftopic453968_0_0_asc.php

Musst du zwar ein wenig anpassen, aber bei VBA-Gut sollte das kein Problem sein.

Gruß
Nepumuk


  

Betrifft: AW: Datumsanzeige von "Daten aktualisieren" von: Markus
Geschrieben am: 28.07.2014 15:51:00

Hallo Nepumuk, vielen Dank für die schnelle Antwort. Jedoch bekomme ich es wohl doch nicht so einfach hin.... Mit Klassenmodulen habe ich noch nicht gearbeitet. Das Klassenmodul AfterRefresh ist bei mir auch nirgends vorhanden. Ich wüsste auch nicht welchen VBA Code ich dort eingeben muss...

Ich habe es hiermit versucht:

Public WithEvents qt As QueryTable

Private Sub Qt_AfterRefresh(ByVal Erfolg As Boolean)

   ' Declare variables.
   Dim a As Integer
   Dim My_Prompt As String

   ' Initialize prompt text for message box.
   My_Prompt = "Data will be refreshed."

   ' Get YES or NO result from the message box
    a = MsgBox("Do you want to refresh the data now?", vbYesNo)

   ' Check to see whether YES or NO was selected.
   If a = vbNo Then

      ' Change prompt text for message box.
      My_Prompt = "Data will not be refreshed."

      ' Cancels the Query Refresh.
      Cancel = True

   End If

   ' Displays message box before refresh (or non-refresh) occurs.
   MsgBox My_Prompt

End Sub
Mit diesem Code passiert gar nichts nach dem aktualisieren...

Könntest DU mir helfen ?

VIELEN DANK.


  

Betrifft: AW: Datumsanzeige von "Daten aktualisieren" von: Nepumuk
Geschrieben am: 28.07.2014 16:46:50

Hallo,

du brauchst doch nur den Code 1:1 übernehmen.

AfterRefresh ist kein Klassenmodul sondern ein Event des QueryTable-Objektes. Muss ich jetzt After und Event übersetzen? Außerdem ist der im Klassenmodul schon drin.

Was ich meinte, statt:

MsgBox "Formatieren"

kommt dein Eintrag des Datum. Das ist doch nicht zu viel verlangt einer Anleitung zu folgen, den Code in deine Mappe zu kopieren und eine einzige Programmzeile auszutauschen.

Und erzähl keinen Unsinn "Ich hab noch nie mit Klassen gearbeitet". Doch hast du garantiert oder was meinst du sind die Module der Tabellen, der Arbeitsmappe oder eines Userforms? Alles Klassen, nur diesmal musst du ein eigenes Klassenmodul erstellen der das QueryTable bringt kein eigenes mit.

Deine komische Abfrage ob das QueryTable jetzt aktualisiert werden soll, hat natürlich im AfterRefresh keinen Sinn, denn in dem Moment ist es schon passiert.

Und noch ein Tipp, wenn ich deinen Code so ansehe, dann ist das maximal Basiswissen in VBA und keineswegs gut. Bei gut setze ich das Arbeiten mit selbst erstellten Klassen voraus und entsprechend gestalte ich meine Antwort.

Gruß
Nepumuk