Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ActiveSheet.ShowDataForm in Makros

ActiveSheet.ShowDataForm in Makros
20.04.2006 20:24:20
StefanH
Hallo,
ich arbeite seit längerem mit dieser Datei für Rechnungen und Lieferscheine und möchte die Abläufe darin vereinfachen. Dazu habe ich eine Benutzermenü erstellt und möchte es mit Makros steuern. Ein Teil davon klappt auch, weil einfach.
Bei Handgebrauch gebe ich die Rechnungen und Lieferscheine immer mit dem Befehl Daten/Maske im dazugehörigen Spaltenbereich ein. Hier werden mir, wenn ich im Bereich der Datenreihe bin, auch immer nur die benötigten Felder (aus Zeilenüberschrift)angezeigt. Bei den Makros klappt das nicht, es wird mit dem Befehl "ActiveSheet.ShowDataForm" immer die ganze Zeile des Arbeitsblattes angezeigt.
Wie erreiche ich es, daß nur die drei oder vier Spalten in der Maske gezeigt werden? Und wie schaffe ich es, daß immer die letzte Zeil plus 1 genommen wird?
Die Datei ist in gekürzter Fassung hier hinterlegt. https://www.herber.de/bbs/user/33010.xls
Und wenn ich schon fragen kann, wie bringe ich denn die Makros rechnung_neu und ls_neu (in den Makros sind bestimmt auch Fehler, nicht meckern) im Modul 1 dazu, immer im dem Datum angepassten Monat das richtige Blatt (von jan bis dez) zu öffnen und an die oben beschriebene Position zu springen?
Gruß Stefan
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveSheet.ShowDataForm in Makros
20.04.2006 21:23:41
xlSchnack
Hi Stefan,
der Datenbankbereich wird nicht gefunden. Ersetz mal dein Makro rechnung_neu durch dieses, da wird der Datenbankbereich vor Aufruf der Maske definiert:

Sub rechnung_neu()
ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
"=OFFSET(R12C1,,,COUNTA(C1)-2,4)"
SendKeys "%n" 'damit steht die Maske zur Neuerfassung des nächsten Satzes bereit
CommandBars.FindControl(ID:=860).Execute
End Sub

Es stört auch den Ablauf der Maske, dass du das Datum wie in deinem Code vorher schon einsetzt für neue Datensätze.
Salut
Anzeige
AW: ActiveSheet.ShowDataForm in Makros
20.04.2006 21:36:30
StefanH
Hallo xlSchnack,
vielen Dank, erstes Problem gelöst und gleich auf die Lieferscheine angepasst. Läuft super.
Kann man den nun auch den entsprechenden Monat abfangen und das Tabellenblatt so vordefinieren?
Gruß Stefan
AW: ActiveSheet.ShowDataForm in Makros
21.04.2006 20:25:00
StefanH
Hallo xlSchnack
Ich habe die Lösung im Archiv gefunden:
Vor das Makro die Zeile
Sheets(Format(Date,"MMM")).Activate
einfügen und das Monatsblatt, bei mir mit drei Buchstaben, öffnet sich mit dem passenden Dialog. Läuft tadellos.
Gruß Stefan
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ActiveSheet.ShowDataForm in Makros optimieren


Schritt-für-Schritt-Anleitung

  1. Datenbereich definieren: Stelle sicher, dass dein Datenbereich für die ShowDataForm korrekt definiert ist. Ersetze dein vorhandenes Makro rechnung_neu durch den folgenden Code:

    Sub rechnung_neu()
       ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
       "=OFFSET(R12C1,,,COUNTA(C1)-2,4)"
       SendKeys "%n" ' Maske zur Neuerfassung des nächsten Satzes bereitstellen
       CommandBars.FindControl(ID:=860).Execute
    End Sub
  2. Monatsblatt aktivieren: Um das entsprechende Monatsblatt zu aktivieren, füge diese Zeile vor deinem Makro hinzu:

    Sheets(Format(Date, "MMM")).Activate
  3. Maske anzeigen: Nutze den Befehl ActiveSheet.ShowDataForm, um die Maske anzuzeigen. Damit wird die Maske jedoch nur für die gesamte Zeile angezeigt. Um dies zu ändern, musst du sicherstellen, dass der Datenbereich korrekt eingestellt ist.


Häufige Fehler und Lösungen

  • Problem: Es wird die gesamte Zeile anstelle der definierten Spalten angezeigt.

    • Lösung: Überprüfe, ob der Bereich für die Daten korrekt definiert ist. Nutze den Befehl ActiveWorkbook.Names.Add, um sicherzustellen, dass nur die gewünschten Spalten in der Maske angezeigt werden.
  • Problem: Das Tabellenblatt öffnet sich nicht korrekt.

    • Lösung: Stelle sicher, dass du die Zeile Sheets(Format(Date,"MMM")).Activate vor dem Aufruf des Makros hinzufügst.

Alternative Methoden

Falls du die ShowDataForm nicht verwenden möchtest, kannst du auch ein benutzerdefiniertes UserForm in VBA erstellen. Dies ermöglicht dir eine größere Flexibilität in der Gestaltung und Funktionalität. Hier ist ein einfacher Ansatz:

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein neues UserForm hinzu und gestalte es nach deinen Wünschen.
  3. Schreibe den VBA-Code, um die Daten in das UserForm zu laden und die Benutzerinteraktion zu ermöglichen.

Praktische Beispiele

Hier ist ein Beispiel, wie du das Makro rechnung_neu anpassen kannst, um die ShowDataForm nur für bestimmte Spalten zu aktivieren:

Sub rechnung_neu()
    ' Definiere den Datenbereich
    ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
    "=OFFSET(R12C1,,,COUNTA(C1)-2,4)"
    ' Aktiviere das Monatsblatt
    Sheets(Format(Date, "MMM")).Activate
    ' Zeige die Maske an
    ActiveSheet.ShowDataForm
End Sub

Tipps für Profis

  • Effiziente Nutzung von Makros: Kombiniere mehrere Makros für eine reibungslose Benutzererfahrung. Du kannst die ShowDataForm mit anderen Funktionen verknüpfen, um Daten automatisch zu verarbeiten.
  • Fehlerbehandlung: Implementiere eine grundlegende Fehlerbehandlung in deinen Makros, um unerwartete Probleme zu vermeiden. Nutze On Error Resume Next für eine einfachere Fehlerbehandlung.

FAQ: Häufige Fragen

1. Wie kann ich die ShowDataForm für spezifische Spalten anpassen?
Du musst den Datenbereich korrekt definieren, indem du nur die gewünschten Spalten in deinem Makro anführst.

2. Warum funktioniert der Befehl ActiveSheet.ShowDataForm nicht wie erwartet?
Stelle sicher, dass der Datenbereich korrekt definiert ist und dass du dich im richtigen Tabellenblatt befindest, bevor du die Maske aufrufst.

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