Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makros "Überwachen"+"Einblenden" harmonieren nicht

Makros "Überwachen"+"Einblenden" harmonieren nicht
12.04.2017 11:58:14
Michael
Liebe Excel-Profis!
Folgendes Problem:
Ich will in einer Exceldatei mit mehreren Sheets folgendes erreichen:
Wenn in Sheet4 in den Zellen C8 bis C17 eine Änderung erfolgt (Eintragung oder Löschung), blende in Sheet8 entsprechend Spalten ein oder aus.
Die Überwachung in Sheet4 funktioniert einwandfrei (Sub liegt direkt im Sheet):

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("c8:c17")) Is Nothing Then
End If
End Sub
Das Ein- und Ausblenden nach den nötigen Parametern klappt auch einwandfrei(Sub liegt in "Arbeitsmappe"):

Public Sub hide()
Dim wert As Integer
Dim longRow As Long
Set perso = ActiveWorkbook.Sheets(8)
For longRow = 9 To 28
If longRow Mod 2 = 0 Then GoTo sprung Else
If perso.Cells(17, longRow).Value = 0 Then
perso.Range(Columns(longRow), Columns(longRow + 1)).EntireColumn.Hidden = True
Else
perso.Range(Columns(longRow), Columns(longRow + 1)).EntireColumn.Hidden = False
End If
sprung:
Next longRow
Set rng = Nothing
Set grund = Nothing
Set perso = Nothing
End Sub
Problem:
1.
Ich kann das Sub hide() weder mit Call(findet er nicht), noch mit Application.Run aufrufen (kann er nicht starten, weil versteckt oder deaktiviert). Es existiert aber kein Blattschutz o.ä. Auch an die Apostrophe um den Dateinamen bei "Run" habe ich gedacht.
2.
Sobald ich das Sub hide() in ein Sheet oder ein Modul verschiebe, bekomme ich einen Fehler ("Objekt unterstützt diese Eigenschaft oder Methode nicht") in der fett markierten Zeile.
Leider hatte ich mit diversen Varianten über Public/Private Sub, Option Explicit, definierte Ranges etc. als Klarnamen eintragen, If-Schleifen verändern etc. bisher keinen Erfolg.
Also, ich könnte Unterstützung gebrauchen um entweder:
- den Code in hide() sauber zu bekommen, um ihn direkt in Sheet4 beim ChangeSub laufen zu lassen
oder
-eine Lösung zu finden, wie ich aus dem ChangeSub in Sheet4 das Sub "hide()" aufrufen kann.
Vielen Dank im Voraus für die bis jetzt immer schnelle und kompetente Hilfe!
Liebe Grüße
Michael
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros "Überwachen"+"Einblenden" harmonieren nicht
12.04.2017 12:45:19
hary
Moin
Dieser Code kommt in den Code von Sheet4
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("c8:c17")) Is Nothing Then
hide
End If
End Sub

Dieser Code kommt in ein Modul. Du musst Columns auch das Blatt zuweisen.
Public Sub hide()
Dim longRow As Long
Dim perso As Worksheet
Set perso = ActiveWorkbook.Sheets(2)
For longRow = 9 To 28 Step 2
If perso.Cells(17, longRow).Value = 0 Then
perso.Range(perso.Columns(longRow), perso.Columns(longRow + 1)). _
EntireColumn.Hidden = True
Else
perso.Range(perso.Columns(longRow), perso.Columns(longRow + 1)). _
EntireColumn.Hidden = False
End If
Set perso = Nothing
End Sub

Kannst es auch vereinfachen.
Public Sub hide()
Dim longRow As Long
Dim perso As Worksheet
Set perso = ActiveWorkbook.Sheets(2)
For longRow = 9 To 28 Step 2
With perso
.Range(.Columns(longRow), .Columns(longRow + 1)).Hidden = .Cells(17, longRow).Value = 0
End With
Next
Set perso = Nothing
End Sub

gruss hary
Anzeige
AW: aendere bitte mal..
12.04.2017 12:48:55
hary
Moin
Aendere mal bitte den Index im Code.
statt
ActiveWorkbook.Sheets(2)

nimm
ActiveWorkbook.Sheets(8)

gruss hary
AW: aendere bitte mal..
12.04.2017 14:49:42
Michael
Läuft super, tausend Dank für beide Tipps!
Liebe Grüße
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige