Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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

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

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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige