Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
580to584
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
580to584
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spalte ausblenden wenn...

Spalte ausblenden wenn...
07.03.2005 16:45:04
Miro
Hallo,
habe das folgende Makro:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
''Macro 1; header and footer''
a = " " & Range("J112")
b = " " & Range("J117")
k = " " & Range("J122")
d = " " & Range("J130")
e = " " & Range("J135")
f = " " & Range("J140")
g = "&""TKTypeRegular,Fett""&12" & a
h = "&""TKTypeRegular,Fett""&12" & b
m = "&""TKTypeRegular,Fett""&12" & k
j = "&""TKTypeRegular,Fett""&12" & d
k = "&""TKTypeRegular,Fett""&12" & e
l = "&""TKTypeRegular,Fett""&12" & f
ActiveSheet.PageSetup.RightFooter = (g)
ActiveSheet.PageSetup.CenterFooter = (h)
ActiveSheet.PageSetup.LeftFooter = (m)
ActiveSheet.PageSetup.RightHeader = (j)
ActiveSheet.PageSetup.CenterHeader = (k)
ActiveSheet.PageSetup.LeftHeader = (l)
''Macro 2; suppress columns''
Const Auswahlzelle = "F1"
Const Monatsüberschriften = "AD5:AQ5"
Dim i As Integer, c As Integer
Dim s_letzte As Range
Dim s_erste As Range
Dim s As Range
If Target.Address(0, 0) = Auswahlzelle Then
Set s_erste = Range(Monatsüberschriften)(1)
Set s_letzte = Range(Monatsüberschriften)(1).Offset(0, Range(Monatsüberschriften).Count - 1)
Range(Monatsüberschriften).EntireColumn.Hidden = False
For Each s In Range(Monatsüberschriften)
If s.Value > Target.Value Then
Range(s, s_letzte).EntireColumn.Hidden = True
Exit For
End If
Next
End If
End Sub

Makro 1 (für Kopf- und Fußzeilen) und Makro 2 (Spalten werden ein/-ausgeblendet, wenn eine bestimmte Bedingung erfüllt ist) werden ausgeführt, sobald das aktive Areitsblatt geändert wird. Ich möchte nun, dass das Makro eins nach wie vor bei Änderungen im aktuellen Arbeitsblatt geändert wird. Makro 2 soll ausgeführt werden, sobald sich der Wert in Zelle F1 ändert. Der Wert in Zelle F1 greift nun wiederum auf eine andere Zelle in einem anderen Arbeitsblatt der gleichen Datei zu
(ich nenne es mal das Originärarbeitsblatt = OAB´). Ändere ich den Wert in der entsprechenden Zelle des OAB, so ändert sich natürlich auch der Wert in der Zelle F1. Das Makro versteht diese Veränderung der Zelle F1 allerdings nicht als Änderung, und wird entsprechend nicht ausgeführt. Wie kriege ich Makro 2 dazu, dass es reagiert, wenn sich der "verknüpfte Wert" in Zelle F1 ändert?
Danke für die Hilfe...
LG

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte ausblenden wenn...
07.03.2005 17:26:56
Matthias
Hallo Miro,
da F1 über eine Formel geändert wird, brauchst du das Worksheet_Calculate-Ereignis.
Dieses hat aber kein Argument (wie Target beim Change-Ereignis), so dass dein Makro bei jeder Neuberechnung ausgeführt werden muss.
Willst du das nicht, müsstest du in deinem "OAB" das Worksheet_Change-Ereignis auf die Ursprungszelle anwenden.
Gruß Matthias
AW: Spalte ausblenden wenn...
07.03.2005 17:52:03
Miro
Hallo Matthias,
wie wüde denn ein solcher Verweis auf die Zelle im OAB aussehen?
LG
AW: Spalte ausblenden wenn...
07.03.2005 17:58:48
Matthias
Hallo Miro,
naja, angenommen in Tabelle1 Zelle F1 steht =Tabelle2!A1
dann im Codemudul von Blatt2:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Makro2 ' oder wie es auch immer heißt
End If
End Sub

Du prüfst also nicht, ob sich F1 in Blatt1 geändert hat, sonder, ob sich ein Element der Formel in F1 geändert hat (hier also A1 in Blatt2).
Gruß Matthias
Anzeige
AW: Spalte ausblenden wenn...
07.03.2005 18:17:30
Miro
Hallo Matthias,
habe es gerade ausprobiert, aber leider funktioniert es nicht.
Mir ist die Logik auch noch nicht so ganz klar:
Ich ändere das Makro in Blatt 2 (dem OAB). Wieso sollte das Makro in Blatt 1 (eben jenem Blat in dem sich der Bezug auf Blatt 2 befindet) plötzlich anders ablaufen.
Das Makro hätte dann die folgende Gestalt:
''Macro 2; suppress columns''
If Not Intersect(Target, Range("F1")) Is Nothing Then
Const Auswahlzelle = "F1"
Const Monatsüberschriften = "AD5:AQ5"
Dim i As Integer, c As Integer
Dim s_letzte As Range
Dim s_erste As Range
Dim s As Range
If Target.Address(0, 0) = Auswahlzelle Then
Set s_erste = Range(Monatsüberschriften)(1)
Set s_letzte = Range(Monatsüberschriften)(1).Offset(0, Range(Monatsüberschriften).Count - 1)
Range(Monatsüberschriften).EntireColumn.Hidden = False
For Each s In Range(Monatsüberschriften)
If s.Value &gt Target.Value Then
Range(s, s_letzte).EntireColumn.Hidden = True
Exit For
End If
Next

End If
End If
Die Zelle im OAB auf die sich die Formel bezieht ist ebenfalls F1.
LG
Anzeige
AW: Spalte ausblenden wenn...
07.03.2005 18:28:56
Matthias
Hallo Miro,
dein Makro ist aus dem Worksheet_Change()-Prozedur "entrissen" und funktioniert so natürlich nicht.
Das Makro muss in ein "normales" Modul (z.B. Modul1) und könnte dann z.B. so aussehen:
Sub Makro2()
Const Auswahlzelle = "F1"
Const Monatsüberschriften = "AD5:AQ5"
Dim i As Integer, c As Integer
Dim s_letzte As Range
Dim s_erste As Range
Dim s As Range
With Sheets("Tabelle1")
Set s_erste = .Range(Monatsüberschriften)(1)
Set s_letzte = .Range(Monatsüberschriften)(1).Offset(0, .Range(Monatsüberschriften).Count - 1)
.Range(Monatsüberschriften).EntireColumn.Hidden = False
For Each s In .Range(Monatsüberschriften)
If s.Value > .Range(Auswahlzelle).Value Then
.Range(s, s_letzte).EntireColumn.Hidden = True
Exit For
End If
Next
End With
End Sub
Gruß Matthias
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige