Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1556to1560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Variables "Formular"

VBA Variables "Formular"
08.05.2017 16:10:47
Themes
Hallo,
ich habe folgene Aufgabenstellung, die ich mit meinen rudimentären VBA Kenntnissen auch gelöst habe, die aber aufgrund einer Neuberechnung nach jeder Dateneingabe leider sehr langsam ist.
Ich muss 3 ähnliche Formulare (einfache Eingabe in Zellen) erstellen, für die es jeweils 2 Varianten gibt (Also insgesamt 6 Formulare)
Ich habe alle möglichen Datenfelder zeilenweise in eine Tabelle (Datenblatt "Formular") geschrieben. Hinter der Eingabe markiert ein "x" in einer bestimmten Spalte zu welchem Formular das Datenfeld/die Zeile gehören soll. Das "x" soll markieren, ob die Zeile ausgeblendet werden soll oder nicht.
In einem weiteren Datenblatt ("Start") soll der Anwender das benötigte Formular auswählen, z.B. "Messung TYP2" Variante "B". Eine kleine Berechnung ergibt den Schlüssel, welche Spalte für die Steuerung des Zeilenausblendens verwendet werden soll.
Das Ausblenden der nicht benötigten Zeilen funktioniert mit dem folgenden Code auch ganz gut:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Spalte As Integer, Formularauswahl As Integer
Formularauswahl = Worksheets("Start").Range("I5")
If Formularauswahl = "11" Then
Spalte = 17
End If
If Formularauswahl = "12" Then
Spalte = 18
End If
If Formularauswahl = "21" Then
Spalte = 19
End If
If Formularauswahl = "22" Then
Spalte = 20
End If
If Formularauswahl = "31" Then
Spalte = 21
End If
If Formularauswahl = "32" Then
Spalte = 22
End If
For i = 19 To 144
If Cells(i, Spalte).Value = "" Then
Rows(i).Hidden = True
End If
Next i
End Sub

Nur ist das ganze sehr langsam, da nach jeder Dateneingabe die auszublendenden Zeilen neu berechnet werden.
Kann man die "Zeilenauswahl" einmal generieren und dann "in Ruhe" das Formular ausfüllen?
Zum Hintergrund: Es werden von allen Formularen alle Daten in Spalten eines weiteren Datenblatts geschrieben. Pro Excel- Datei immer nur ein Datensatz. Die Dateien werden später in einen Ordner gesammelt und automatisch ausgelesen und dann in einer Datenbank weiter "verwurstet".
Vielen Dank,
Themes

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Variables "Formular"
08.05.2017 17:16:59
Zwenn
Hallo Themes,
ehrlich gesagt habe ich Dein Konstrukt nicht ganz verstanden. Ich weiß nicht, was sich denn nun auf welcher Tabelle befindet und was es mit den 6 Formularen auf sich hat, wenn das Makro doch nur prüft, was in Zelle I5 in der Tabelle Start steht.
Allerdings frage ich mich, warum Du das Change Ereignis des Tabellenblattes verwendest, auf dem du fortwährend Änderungen vornimmst?
Private Sub Worksheet_Change(ByVal Target As Range)

ist ein "fester Makroname", auf den Excel automatisch reagiert, sofern sich ein Makro mit dieser Kopfzeile im Code Abschnitt einer Tabelle befindet.
Übernimm den Inhalt des Makros doch einfach in eins mit einem eigenen Namen.
Z.B.
Sub ZellenJetztAusblenden()

Das kannst Du manuell genau dann aufrufen, wenn Du es brauchst. Du kannst es auch an einen Button zuweisen, den Du auf einem Tabellenblatt platzieren kannst. Brauchst dann nur draufklicken.
In Deinem Makro müssten dann nur noch die Tebellenzuordnungen mit eingebracht werden, damit es auf die Zeilen in der richtigen Tabelle reagiert.
In etwa so:

For i = 19 To 144
If Worksheets("TABELLENNAME").Cells(i, Spalte).Value = "" Then
Worksheets("TABELLENNAME").Rows(i).Hidden = True
End If
Next i
Für mehr oder andere Hilfe wäre eine Beispieldatei mit Deinem Kostrukt vermutlich sehr hilfreich.
Viele Grüße,
Zwenn
Anzeige
AW: VBA Variables "Formular"
09.05.2017 12:58:56
Themes
Hallo!
ja vielen Dank! Wenn ich das Ausblenden über eine Schaltfläche als Makro veranlasse, gehts ganz gut. Manchmal ist die Lösung einfacher als man denkt!
VG Themes

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige