Verknüpfen von Funktionen
27.10.2020 12:20:04
Funktionen
ich habe eine Arbeitsmappe mit vielen Sheets.
Es werden auch einige Sheets immer wieder in diese Arbeitsmappe reinkopiert.
in dem Sheet ist folgender VBA Text, mit dem Zwecks ständig auf Änderungen zu reagieren.
Hierbei wird auf die Funktion, die mit im VBA Text des Sheets steht "StatusZeile" aufgerufen.
Public Sub Worksheet_Change(ByVal Target As Range)
'** Mehrfachauswahl über DropDown-Liste (Gültigkeitsprüfung)
'** Einfügen im Code-Container des betreffenden Arbeitsblattes
'** Dimensionierung der Variablen
Dim rngDV As Range
Dim wert_old As String
Dim wertnew As String
Dim iStartZeile As Integer
Dim iLetzteZeile As Integer
iStartZeile = 8
iLetzteZeile = 8
'** Errorhandling
On Error GoTo Errorhandling
'** SPALTE x******Mehrfachauswahl im definierten Bereich (Bsp. B4:B14) durchführen
If Not Application.Intersect(Target, Range("x" & iStartZeile & ":" & "x" & iLetzteZeile)) Is _
Nothing Then
'**Range definieren
Set rngDV = Target.SpecialCells(xlCellTypeAllValidation)
If rngDV Is Nothing Then GoTo Errorhandling
'** Prüfen, ob eine gültige Zelle ausgewählt wurde und Werte eintragen
If Not Application.Intersect(Target, rngDV) Is Nothing Then
Application.EnableEvents = False
wertnew = Target.Value
Application.Undo
wertold = Target.Value
Target.Value = wertnew
If wertold "" Then
If wertnew "" Then
Target.Value = wertold & ", " & wertnew
End If
End If
End If
Application.EnableEvents = True
End If
'* ENDE SPALTE x
Errorhandling:
Application.EnableEvents = True
Call StatusZeile
End Sub
Sub StatusZeile()
' Leere Statuszeile ausblenden und einblenden
Dim Zelle As Range
Dim ws As Worksheet
Call Unprotect
'ActiveSheet.Unprotect Password:="oktober2020"
Application.ScreenUpdating = False
Set ws = Application.ThisWorkbook.ActiveSheet
For Each Zelle In ws.Range("b20:b98").Cells
If Zelle = "" Then
ws.Rows(Zelle.Row).Hidden = True
Exit Sub
Else
ws.Rows(Zelle.Row).Hidden = False
End If
Next
'ActiveSheet.Protect Password:="oktober2020"
Call Protect
'DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Der VBA Text Statuszeile greift wieder rum auf Funktionen zu, die aber in der Arbeitsmappe in den Modulen hinterlegt ist zu.
Option Explicit
Public Function Protect()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True, Password:="oktober2020"
End Function
Public Function Unprotect()
ActiveSheet.Unprotect Password:="oktober2020"
End Function
Leider wird dann die Funktionen Protect und Unprotect nicht richtig ausgeführt.
Wenn ich den VBA Code so eingebe bei dem Code der StatusZeile funktioniert das.
Mache ich hier etwas falsch mit Public private usw. ?!
lg Mirko