VBA Variables "Formular"
08.05.2017 16:10:47
Themes
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