Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Funktion ShowDataForm

Funktion ShowDataForm
07.01.2019 10:02:20
torgo
Frohes Neues,
ich habe eine Frage zur ShowDataFunktion.
Ich möchte die Funktion über einen Button auf Tabellenblatt "A" aufrufen und dann über die Maske Daten auf einem anderen Blatt ("Inhalt") ändern/bearbeiten. Danach möchte ich die Information haben, die geändert wurden.
Ich habe das mal mit der Worksheet_Change Funktion angelegt.
Das Problem ist nun, das mir die Änderungen nicht angezeigt werden, auch wenn ich auf dem zu ä _
ndernden Blatt bin. Händisch im Blatt funktionierts, allerdings auch nur einzlne Werte, ich mö _
chte aber auch erkennen, wenn mehrere Werte über ShowDataForm verändert wurden.
Hat da jemand einen Lösungsvorschlag. Danke
Sub ID_Suchen_Anlegen()
'Öffnet Eingabemaske um ID´s zu suchen und neu anzulegen
Sheets("Inhalt").Select
With Worksheets("Inhalt").ShowDataForm
End With
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
'A bis K als Bereich für Änderungen festlegen
Set KeyCells = Range("A:K")
'Auf Änderung prüfen
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
'Wenn Änderung vorhanden Adresse in MsgBox ausgeben
MsgBox "Cell " & Target.Address & " has changed."
End If
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion ShowDataForm
07.01.2019 10:42:15
Luschi
Hallo torgo,
die ShowDataForm-Methode, schaltet während des Aufrufs die Ereignis-Routinen von Excel ab, also
- Worksheet_Change
- Worksheet_SelectionChange
- usw.
Habe es getestet und dagegen kann man nichts machen, außer man erstellt sich selbst ein Formular. Da hat man wieder die vollen Handlungsgewalt.
Gruß von Luschi
aus klein-Paris
PS: in der Online-Hilfe steht dazu:
Das Makro wird angehalten, während Sie das Datenformular verwenden.
Wenn Sie das Datenformular schließen, wird das Makro in der Zeile nach der ShowDataForm -Methode fortgesetzt.
(Leider ist die dt. Übersetzung sehr miserabel, aber die engl. Originalfassung bringts ans _ Tageslicht)

https://docs.microsoft.com/de-de/office/vba/api/excel.worksheet.showdataform?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dde-DE%26k%3Dk(vbaxl10.chm175127)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue

Anzeige
AW: Funktion ShowDataForm
07.01.2019 12:20:22
torgo
Ok danke dir, dann bastel ich mir ne Userform (warum einfach haben) :D
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Nutzung der ShowDataForm in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und wähle das Tabellenblatt, auf dem der Button platziert werden soll (z.B. "A").

  2. Füge einen Button hinzu: Gehe zu "Entwicklertools" > "Einfügen" > "Button (Formularsteuerelement)" und platziere den Button auf dem Blatt.

  3. Weise dem Button ein Makro zu: Klicke mit der rechten Maustaste auf den Button und wähle "Makro zuweisen". Erstelle ein neues Makro oder wähle ein bestehendes.

  4. Füge den folgenden VBA-Code ein, um die ShowDataForm aufzurufen:

    Sub ID_Suchen_Anlegen()
       'Öffnet Eingabemaske um ID´s zu suchen und neu anzulegen
       Sheets("Inhalt").Select
       With Worksheets("Inhalt").ShowDataForm
       End With
    End Sub
  5. Implementiere die Worksheet_Change Funktion, um Änderungen zu verfolgen:

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim KeyCells As Range
       'A bis K als Bereich für Änderungen festlegen
       Set KeyCells = Range("A:K")
       'Auf Änderung prüfen
       If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
           'Wenn Änderung vorhanden Adresse in MsgBox ausgeben
           MsgBox "Cell " & Target.Address & " has changed."
       End If
    End Sub

Häufige Fehler und Lösungen

  • Problem: Änderungen werden nicht angezeigt, nachdem die ShowDataForm verwendet wurde.

    • Lösung: Die ShowDataForm-Methode schaltet die Ereignis-Routinen ab. Nutze stattdessen ein benutzerdefiniertes Formular für volle Kontrolle.
  • Problem: Fehler beim Aufrufen der ShowDataForm.

    • Lösung: Stelle sicher, dass das Arbeitsblatt korrekt ausgewählt ist und dass die ShowDataForm-Methode auf dem richtigen Arbeitsblatt aufgerufen wird.

Alternative Methoden

Wenn die Verwendung von ShowDataForm nicht den gewünschten Effekt hat, kannst Du eine benutzerdefinierte UserForm erstellen:

  1. Gehe zu "Entwicklertools" > "Visual Basic".
  2. Füge eine neue UserForm hinzu: Klicke mit der rechten Maustaste auf "VBAProject" und wähle "UserForm einfügen".
  3. Gestalte die UserForm nach Deinen Bedürfnissen und füge Steuerelemente (z.B. Textfelder, Schaltflächen) hinzu.
  4. Schreibe den Code, um die Daten in die entsprechenden Zellen zu übertragen.

Praktische Beispiele

Hier ist ein einfaches Beispiel für die Verwendung einer UserForm:

Private Sub btnSpeichern_Click()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Inhalt")

    'Daten aus Textfeldern in Zellen einfügen
    ws.Range("A1").Value = txtID.Value
    ws.Range("B1").Value = txtName.Value
    'Schließe die UserForm
    Unload Me
End Sub

Tipps für Profis

  • Nutze Option Explicit in Deinen VBA-Modulen, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Wenn Du mit activesheet.showdataform arbeitest, achte darauf, dass das aktive Blatt die erforderlichen Daten enthält.
  • Experimentiere mit der UserForm-Validierung, um sicherzustellen, dass die eingegebenen Daten korrekt sind, bevor sie in die Tabelle übertragen werden.

FAQ: Häufige Fragen

1. Kann ich die ShowDataForm anpassen? Die ShowDataForm ist nicht anpassbar. Für individuelle Anpassungen solltest Du eine UserForm erstellen.

2. Warum funktionieren die Worksheet_Change-Ereignisse nicht mit ShowDataForm? Die ShowDataForm schaltet die Ereignis-Routinen ab, während sie aktiv ist. Das bedeutet, dass Änderungen nicht aufgezeichnet werden, bis die Form geschlossen wird.

3. Gibt es eine Möglichkeit, mehrere Änderungen gleichzeitig zu erfassen? Ja, indem Du eine benutzerdefinierte UserForm erstellst, kannst Du mehrere Werte gleichzeitig erfassen und speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige