ich habe hier schon sehr viel Hilfe durch Erich G. bekommen und nur so konnte ich mein Excelprojekt fast fertig stellen nun plagen mich noch 2 kleinere Probleme.
Dies ist eine Fortstezung des Threads: https://www.herber.de/forum/archiv/1012to1016/t1013703.htm
Dort habe ich mit einem Makro folgende Hilfe bekommen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim intA As Long, intS As Long, wksS As Worksheet, wksT As Worksheet
Dim zz As Long, rngH As Range, intT As Long
Dim ii As Long, jj As Long, rngK As Range
If Not Intersect(Target, Range("A2:A21,A28")) Is Nothing Then
intA = Application.CountA(Range("A2:A21")) ' Anz. Spieler
intS = Application.Min(intA, 14) ' Anz. Spieler-Anzeige
intT = Cells(28, 1) ' Anz. Spieltage
Set wksS = Sheets("Torschützen Spielt.")
Set wksT = Sheets("Spieltagausw.")
With Sheets("Torschützen gesamt")
If intA = 0 Then
.Rows("1:50").Hidden = True ' incl. Diagramm?
wksS.Columns(1).Resize(, 41).Hidden = True
Else ' einblenden intA Spieler (Zeilen 3 bis 3+intA-1)
.Rows(1).Resize(2 + intA).Hidden = False ' ab Zeile 1 wg. Überschriften
.Rows("23:50").Hidden = False ' Diagramm
wksS.Columns(1).Resize(, 2 * intA + 1).Hidden = False
wksS.Rows(1).Resize(intT + 3).Hidden = False
' ausblenden 20-intA Spieler (Zeilen 3+intA bis 22)
If intA If intS * intT = 0 Then ' alles ausblenden
wksT.Rows("1:684").Hidden = True
Else ' einblenden intS Spieler (Zeilen 3 bis 3+intS-1)
Set rngH = wksT.Rows(1).Resize(intS + 2) ' blende Zeilen 1,2,3,4 ein
Set rngH = Union(rngH, wksT.Rows(17).Resize(2)) ' blende Zeile 17 und 18 ein
If intS
End Sub
Mit dem fetten Teil habe ich nun ein Problem, leider hat sich nun im finalen Test herausgestellt, das man sich nicht immer auf IntS beziehen kann, sondern für eine korrekte Anzeige folgendes gemacht werden müßte. Leider bekomme ich es aber selbst nicht hin.
Wenn im (Tabelenblatt 1 Zelle AV 18) = 0
dann blende Zeilen 1:18 aus
sonst blende Zeilen 1 bis (Tabelenblatt 1 Zelle AV 18 + 2) ein
sowie Zeilen 17,18 ein
und wenn Zelle (Tabelenblatt 1 Zelle AV 18)
dann blende von (Tabelenblatt 1 Zelle AV 18) +3, 14 - (Tabelenblatt 1 Zelle AV 18) Zeilen aus
Wenn im (Tabelenblatt 2 Zelle AV 18) = 0
dann blende Zeilen 19:36 aus
sonst blende Zeilen 19 bis (Tabelenblatt 2 Zelle AV 18 + 20) ein
sowie Zeilen 35,36 ein
und wenn Zelle (Tabelenblatt 2 Zelle AV 18)
dann blende von (Tabelenblatt 2 Zelle AV 18) +21, 14 - (Tabelenblatt 2 Zelle AV 18) Zeilen aus
...................
Wenn im (Tabelenblatt 38 Zelle AV 18) = 0
dann blende Zeilen 667:684 aus
sonst blende Zeilen 667 bis (Tabelenblatt 38 Zelle AV 18 + 668) ein
sowie Zeilen 683,684 ein
und wenn Zelle (Tabelenblatt 38 Zelle AV 18)
dann blende von (Tabelenblatt 38 Zelle AV 18) +669, 14 - (Tabelenblatt 38 Zelle AV 18) Zeilen aus
und wenn IntT
Dann blende Zeilen (intT * 18 + 1), Zeile 684 aus
Ich würde mich freuen wenn ihr mir dabei nochmal helfen könntet! Habe das Forum hier sehr zu schätzen gelernt.
Gruß Kai