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

Userform - an Tabellenblatt fixieren

Forumthread: Userform - an Tabellenblatt fixieren

Userform - an Tabellenblatt fixieren
31.01.2022 14:48:52
Chris
Hallo zusammen,
ich baue gerade ein Excel Tabelle zur Unterstützung bei der Kalkulation von Aufträgen.
Dazu habe ich mir eine .xlsm mit mehreren Tabellenblättern angelegt.
Im ersten Tabellenblatt "Eingabe" habe ich 3 Button angelegt und mit unterschiedlichen Userformen hinterlegt um das Handling möglichst einfach zu gestalten.
Beim Start der Userform wechselt direkt das Tabellenblatt nach "Materialübersicht" was der Anwender nicht unbedingt sehen sollte, aus dem ich für meine combobox in der Userform Informationen ziehe.
Ich habe auch schon versucht als erstes zu schreiben, allerdings wechselt er immer auf die "Materialübersicht".
Nun meine Frage, wie kann ich es einstellen, dass meine Userform auf dem ersten Tabellenblatt "Eingabe" bleibt?
Private Sub UserForm_Initialize() Worksheets("Materialübersicht").Activate Eingabemaske1.Haftgrund.RowSource = "C4:C10" Eingabemaske1.Filament1.RowSource = "C11:C31" Eingabemaske1.Filament2.RowSource = "C11:C31" Worksheets("Druckerübersicht").Activate Eingabemaske1.Drucker.RowSource = "C4:C11" Worksheets("Personalkosten").Activate Eingabemaske1.MA2.RowSource = "C38:C44" Eingabemaske1.MA3.RowSource = "C38:C44" End Sub

Private Sub Button_Cancle_Click()
'Eingabefenster schließen
Unload Eingabemaske1
End Sub

Private Sub Button_Kulk_Click()
'Eingabe der Schaltfläche in die Arbeitsmappe übernehmen
Worksheets("Ergebnisblatt").Activate
Range("C13") = Haftgrund.Text
Range("E13") = HaftgrundGewicht.Text
Range("C14") = Filament1.Text
Range("E14") = Filament1Gewicht.Text
Range("C15") = Filament2.Text
Range("E15") = Filament2Gewicht.Text
Range("C21") = Drucker.Text
Range("C27") = ZeitH.Text
Range("D27") = ZeitM.Text
Range("C28") = AuNH.Text
Range("D28") = AuNM.Text
Range("E28") = MA2.Text
Range("C29") = KonstrH.Text
Range("D29") = KonstrM.Text
Range("E29") = MA3.Text
Unload Eingabemaske1
End Sub
>
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform - an Tabellenblatt fixieren
31.01.2022 15:17:10
guenni
In diesem Fall solltest Du nicht in die Materialübersicht wechseln, sondern die Bereiche vollständig referenzieren

Eingabemaske1.Haftgrund.RowSource = "Materialübersicht!C4:C10"
usw.
Dieses Vorgehen empfiehlt sich für auch alle Range-Objekte in deinem Zukünftigem Code

Worksheets("Ergebnisblatt").Range("C13") = Haftgrund.Text
Worksheets("Ergebnisblatt").Range("C13") = Haftgrund.Text
oder:
with Worksheets("Ergebnisblatt")
.Range("C13") = Haftgrund.Text
.Range("E13") = HaftgrundGewicht.Text
.Range("C14") = Filament1.Text
end with
Sich eine vollständige Referenzierung statt Blattwechsel anzugewöhnen spart viel Fehlersuchzeit!!
Anzeige
AW: Userform - an Tabellenblatt fixieren
01.02.2022 07:02:33
Chris
Klasse vielen Dank für die schnelle Hilfe.
AW: Userform - an Tabellenblatt fixieren
31.01.2022 15:23:10
Rudi
Hallo,

wie kann ich es einstellen, dass meine Userform auf dem ersten Tabellenblatt "Eingabe" bleibt?
indem du auf Activate/ Select verzichtest und sauber referenzierst.
Private Sub UserForm_Initialize()
Eingabemaske1.Haftgrund.RowSource = "Materialübersicht!C4:C10"
Eingabemaske1.Filament1.RowSource = "Materialübersicht!C11:C31"
Eingabemaske1.Filament2.RowSource = "Materialübersicht!C11:C31"
Eingabemaske1.Drucker.RowSource = "Druckerübersicht!C4:C11"
Eingabemaske1.MA2.RowSource = "Personalkosten!C38:C44"
Eingabemaske1.MA3.RowSource = "Personalkosten!C38:C44"
End Sub
Private Sub Button_Kulk_Click()
'Eingabe der Schaltfläche in die Arbeitsmappe übernehmen
With Worksheets("Ergebnisblatt")
.Range("C13") = Haftgrund.Text
.Range("E13") = HaftgrundGewicht.Text
.Range("C14") = Filament1.Text
.Range("E14") = Filament1Gewicht.Text
.Range("C15") = Filament2.Text
.Range("E15") = Filament2Gewicht.Text
.Range("C21") = Drucker.Text
.Range("C27") = ZeitH.Text
.Range("D27") = ZeitM.Text
.Range("C28") = AuNH.Text
.Range("D28") = AuNM.Text
.Range("E28") = MA2.Text
.Range("C29") = KonstrH.Text
.Range("D29") = KonstrM.Text
.Range("E29") = MA3.Text
End With
Unload Eingabemaske1
End Sub
Gruß
Rudi
Anzeige
AW: Userform - an Tabellenblatt fixieren
01.02.2022 07:05:11
Chris
Danke für die schnelle Antwort
AW: Userform - an Tabellenblatt fixieren
31.01.2022 15:35:35
EtoPHG
Hallo
vollständige Referenzierung ist da A & O in VBA

Private Sub UserForm_Initialize()
With Eingabemaske1
.Haftgrund.RowSource = "Materialübersicht!C4:C10"
.Filament1.RowSource = "Materialübersicht!C11:C31"
.Drucker.RowSource = "Druckerübersicht!C4:C11"
.MA2.RowSource = "Personalkosten!C38:C44"
.MA3.RowSource = "Personalkosten!C38:C44"
End With
End Sub
dito Button
Gruss Hansueli
Anzeige
AW: Userform - an Tabellenblatt fixieren
01.02.2022 07:05:43
Chris
Vielen Dank für die schnelle Hilfe
;
Anzeige
Anzeige

Infobox / Tutorial

Userform an Tabellenblatt fixieren


Schritt-für-Schritt-Anleitung

Um deine Userform im ersten Tabellenblatt "Eingabe" zu fixieren und zu verhindern, dass Excel automatisch auf das "Materialübersicht" Tabellenblatt wechselt, befolge diese Schritte:

  1. Referenzierung der Daten:

    • Vermeide das Wechseln zwischen den Tabellenblättern, indem du die Bereiche vollständig referenzierst. Ändere deinen Code in der UserForm_Initialize-Prozedur wie folgt:
    Private Sub UserForm_Initialize()
       With Eingabemaske1
           .Haftgrund.RowSource = "Materialübersicht!C4:C10"
           .Filament1.RowSource = "Materialübersicht!C11:C31"
           .Filament2.RowSource = "Materialübersicht!C11:C31"
           .Drucker.RowSource = "Druckerübersicht!C4:C11"
           .MA2.RowSource = "Personalkosten!C38:C44"
           .MA3.RowSource = "Personalkosten!C38:C44"
       End With
    End Sub
  2. Verwendung von With-Anweisungen:

    • Nutze With-Anweisungen, um deinen Code übersichtlicher zu gestalten und um die Notwendigkeit von häufigen Worksheets-Wechseln zu vermeiden. Dies spart Zeit und reduziert Fehler.
  3. Testen der Userform:

    • Starte die Userform und prüfe, ob die Daten korrekt geladen werden, ohne dass Excel das Tabellenblatt wechselt.

Häufige Fehler und Lösungen

  • Fehler: Tabellenblatt wechselt trotz Referenzierung:

    • Lösung: Stelle sicher, dass du in deinem gesamten VBA-Code keine Activate- oder Select-Anweisungen verwendest. Diese führen dazu, dass Excel das aktive Tabellenblatt wechselt.
  • Fehler: Daten werden nicht angezeigt:

    • Lösung: Überprüfe, ob die Zellreferenzen korrekt sind und die Daten in den angegebenen Zellen vorhanden sind.

Alternative Methoden

Eine alternative Methode zur Fixierung der Userform im aktuellen Tabellenblatt ist die Verwendung von Modalen Userforms. Diese verhindern, dass der Benutzer mit anderen Excel-Elementen interagiert, bis die Userform geschlossen wird.

Dim myUserForm As New Eingabemaske1
myUserForm.Show vbModal

Praktische Beispiele

Hier ist ein Beispiel, wie du die Userform in einer Excel-Anwendung verwenden kannst:

  1. Erstelle eine Userform namens Eingabemaske1.
  2. Füge verschiedene Steuerelemente wie ComboBoxen und Textfelder hinzu.
  3. Implementiere den oben genannten Code in die UserForm_Initialize-Prozedur.
  4. Teste die Userform, indem du die Schaltflächen verwendest, um Daten in das "Ergebnisblatt" zu übertragen.

Tipps für Profis

  • Code-Wartung: Halte deinen Code sauber und gut strukturiert, indem du Kommentare hinzufügst, die erklären, was jeder Abschnitt macht.
  • Fehlerbehandlung: Integriere On Error-Anweisungen, um Fehler elegant zu handhaben und die Benutzererfahrung zu verbessern.
  • Modularisierung: Teile deinen Code in separate Prozeduren oder Funktionen auf, um ihn leichter wartbar zu machen und die Wiederverwendbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Excel-Arbeitsblatt fixiert bleibt? Um sicherzustellen, dass dein Arbeitsblatt fixiert bleibt, solltest du die Verwendung von Activate oder Select vermeiden und stattdessen vollständige Referenzen für alle benötigten Bereiche verwenden.

2. Was ist der Vorteil der Verwendung von modalen Userforms? Modale Userforms verhindern, dass der Benutzer mit anderen Teilen der Anwendung interagiert, bis die Form geschlossen wird. Dies kann besonders nützlich sein, wenn wichtige Eingaben erforderlich sind.

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