Anzeige
Archiv - Navigation
1956to1960
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

Zeilen anderen Tabellenblattes über Zelleingabe ausblenden

Zeilen anderen Tabellenblattes über Zelleingabe ausblenden
05.12.2023 15:21:07
Enes Gegic
Hallo,

Ich hoffe, dass mir ein VBA Experte bei meinem kleinen Problem helfen kann. Folgendes ist mein Ziel:

Meine Excel Datei beinhaltet insgesamt 8 Tabellenblätter. Das erste Tabellenblatt ist für eine aufwendige Leistungsberechnung zuständig und fungiert als "Haupttabelle" mit allen Eingabeparametern.
Im letzten Tabellenblatt werden Zwischenrechnungen berechnet.
Nun möchte, dass wenn ich in die Zelle L17 einen Wert eintrage (max. Motordrehzahl) einige Zeilen im Letzten Tabellenblatt ausgeblendet werden. Die eingetragene Zahl dient als obere Grenze für die Auflistung im letzten Tabellenblatt.
Also sobald eine Zeile, deren erste Spalte einen Wert besitzt, der höher als der Wert in der Zelle L17 ist, soll ausgeblendet werden.
Ich habe mir einen Code zusammen gesetzt, der auf den ersten Blick sinnvoll erscheint, jedoch den Fehler 9 "Index außerhalt des gültigen Bereichs" anzeigt. Die Tabellennamen sind alle korrekt geschrieben.
Ich hoffe dass mir jemand helfen kann. Anbei ist mein vorhandener Code.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim KeyCell As Range
Set KeyCell = Range("L17")

If Not Application.Intersect(KeyCell, Range(Target.Address)) Is Nothing Then

With Worksheets("Zwischenrechnung")

Application.ScreenUpdating = False

For n = 57 To 196

If .Cells(n, 1).Value > Worksheets("Leistungsberechnung").Cells(17, 12).Value Then

.Rows(1).EntireRow.Hidden = True

Else

.Rows(1).EntireRow.Hidden = False

End If

Next n

Application.ScreenUpdating = True

End With

End If

End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen anderen Tabellenblattes über Zelleingabe ausblenden
05.12.2023 20:42:00
Uduuh
Hallo,
jedoch den Fehler 9 "Index außerhalt des gültigen Bereichs" anzeigt.
in welcher Zeile? Wahrscheinlich ist doch einer der Namen falsch. Anhängendes Leerzeichen?
Außerdem sollte es doch wohl .Rows(n).Hidden heißen.

Die Bedingung kannst du dir auch sparen
For n = 57 To 196

.Rows(n).Hidden = .Cells(n, 1) > Worksheets("Leistungsberechnung").Cells(17, 12)
Next n


Gruß aus'm Pott
Udo
AW: Zeilen anderen Tabellenblattes über Zelleingabe ausblenden
06.12.2023 08:48:34
Enes Gegic
Hallo Udo,

Der Fehler tritt in der Zeile

 With Worksheets("Zwischenrechnung")


auf.
Ich habe schon 100mal die Namen der Tabellen überprüft. Daran sollte es meiner Meinung nach nicht liegen.
Danke für den Hinweis, habe ich bereits angepasst.

Liebe Grüße
Anzeige
AW: Zeilen anderen Tabellenblattes über Zelleingabe ausblenden
07.12.2023 14:33:15
Uduuh
Hallo,
dann lade mal die Mappe hoch.

Gruß aus'm Pott
Udo
AW: Zeilen anderen Tabellenblattes über Zelleingabe ausblenden
07.12.2023 14:53:17
Enes Gegic
Hallo Udo,

Ich habe durch deine Hilfe den Fehler gefunden. Tatsächlich war ein Leerzeichen im Namen der Verursacher des Fehlers! Danke!
Ein weiteres Problem plagt mich noch, vielleicht hast du da auch eine Idee wie dies zu lösen ist:

Ein Formularsteuerelement greift auf ein Tabellenblatt mit verschiedenen Daten zu und gibt in der Zellverknüpfung im Hauptblatt (Zelle $G$8) einen Wert ab.
Nun möchte ich mittels VBA auf den durch das Formularsteuerelement ausgegebenen Wert zugreifen und einen weiteren Wert auf einer anderer Zelle ($A$24) ausgeben.
Dies wollte ich durch das Change Ereignis lösen.
Also sobald durch das Formularsteuerelement Zelle $G$8 verändert wird soll durch VBA anhand des Wertes $G$8 ein definierter Wert in Zelle $A$24 ausgeben werden.
Dies funktioniert leider noch nicht. Tippe ich händisch in die Zelle $G$8 einen Wert ein, so erhalte ich den vordefinierten Wert in Zelle $A$24. Jedoch ändert das Formularsteuerelement den Wert in Zelle $G$8, bleibt die Zelle A24 unverändert...

Liebe Grüße
Private Sub Worksheet_Change(ByVal Target As Range)


With Worksheets("Leistungsberechnung")

Dim KeyCell1 As Range
Dim AnswerCell As Range
Set KeyCell1 = Range("$G$8")
Set AnswerCell = Range("$A$22")

If Not Application.Intersect(KeyCell1, Range(Target.Address)) Is Nothing Then

If KeyCell1 = 1 Then AnswerCell = 1
If KeyCell1 = 2 Then AnswerCell = 1
If KeyCell1 = 3 Then AnswerCell = 1
If KeyCell1 = 4 Then AnswerCell = 1
If KeyCell1 = 5 Then AnswerCell = 3
If KeyCell1 = 6 Then AnswerCell = 3
If KeyCell1 = 7 Then AnswerCell = 2
If KeyCell1 = 8 Then AnswerCell = 2
If KeyCell1 = 9 Then AnswerCell = 2
If KeyCell1 = 10 Then AnswerCell = 2
If KeyCell1 = 11 Then AnswerCell = 5
If KeyCell1 = 12 Then AnswerCell = 5
If KeyCell1 = 13 Then AnswerCell = 5
If KeyCell1 = 14 Then AnswerCell = 5
If KeyCell1 = 15 Then AnswerCell = 5
If KeyCell1 = 16 Then AnswerCell = 5
If KeyCell1 = 17 Then AnswerCell = 1
If KeyCell1 = 18 Then AnswerCell = 1
If KeyCell1 = 19 Then AnswerCell = 2
If KeyCell1 = 20 Then AnswerCell = 3
If KeyCell1 = 21 Then AnswerCell = 2
If KeyCell1 = 22 Then AnswerCell = 2
If KeyCell1 = 23 Then AnswerCell = 2
If KeyCell1 = 24 Then AnswerCell = 2
If KeyCell1 = 25 Then AnswerCell = 5
If KeyCell1 = 26 Then AnswerCell = 5
If KeyCell1 = 27 Then AnswerCell = 4
If KeyCell1 = 28 Then AnswerCell = 4
If KeyCell1 = 29 Then AnswerCell = 5
If KeyCell1 = 30 Then AnswerCell = 5
If KeyCell1 = 31 Then AnswerCell = 5
If KeyCell1 = 32 Then AnswerCell = 5
If KeyCell1 = 33 Then AnswerCell = 1
If KeyCell1 = 34 Then AnswerCell = 1
If KeyCell1 = 35 Then AnswerCell = 2
If KeyCell1 = 36 Then AnswerCell = 2
If KeyCell1 = 37 Then AnswerCell = 2
If KeyCell1 = 38 Then AnswerCell = 2
If KeyCell1 = 39 Then AnswerCell = 5
If KeyCell1 = 40 Then AnswerCell = 5

End If

End With

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige