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

Funktion, nur für bestimmtes workbook

Funktion, nur für bestimmtes workbook
02.08.2022 14:43:32
Peter
Guten Tag
Die Funktion "verborgener_Wert" ist in einer bestimmten Arbeitsmappe (A) hinterlegt.
Wenn ich nun eine andere Arbeitsmappe (b) aktivierte und dann zur Arbeitsmappe (A) zurückkehre, wird als Ergebnis der Funktion #Wert angezeigt.
Deshalb habe ich Wb dimensioniert und dieser variable ThisWorkbook zugewiesen.
Anscheinend läuft dann der Code mit
With Wb.Wks
...
End With
nicht korrekt, so dass ich als Ergebnis der Funktion wieder #Wert erhalte.
Wie muss ich den Code anpassen, damit ich keinen Fehlerwert erhalte?
Danke
Peter

Public Function verborgener_Wert(rngZelle As Range, Bereichsnamen As String, dummy As Date) As String
'gibt den absoluten Wert der Zellen mit Beträgen, die ausgeblendet sind innerhalb eines definierten Ranges zurück
Dim Wb As Workbook, Wks As Worksheet, Zelle As Range, rng As Range, strVersteckte As Boolean, dblBetrag As Double
Set Wb = ThisWorkbook
Set Wks = rngZelle.Parent
dblBetrag = 0
With Wb.Wks
For Each Zelle In .Range(Bereichsnamen)
If .Rows(Zelle.Row).Hidden = True Or .Columns(Zelle.Column).Hidden = True Then
strVersteckte = True
If IsNumeric(Zelle.Value) Then
If Zelle.Value  0 Then
dblBetrag = dblBetrag + Abs(Zelle.Value)
End If
End If
End If
Next
End With
verborgener_Wert = dblBetrag
End Function

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion, nur für bestimmtes workbook
02.08.2022 15:23:04
Yal
Hallo Peter,
ein User Defined Function auf einem bestimmten Workbook zu beschränken, ist es wenig sinnvoll: entweder braucht man die Funktion oder nicht. Das jemanden aus versehen diese Funktion in einem anderen Workbook verwendet, ist unwahrscheinlich.
Wenn man alles wegmacht, was nicht unbedingt notwendig und teilweise störend ist, bleibt folgendes übrig:

Public Function verborgener_Wert(ByVal rngZelle) As Double
'gibt den absoluten Wert der Zellen mit Beträgen, die ausgeblendet sind innerhalb eines definierten Ranges zurück
Dim Zelle As Range
Dim dblBetrag As Double
If VarType(rngZelle) = vbString Then Set rngZelle = ThisWorkbook.rngZelle.Range(rngZelle)
On Error Resume Next
For Each Zelle In rngZelle
If Zelle.EntireRow.Hidden Or Zelle.EntireColumn.Hidden Then
dblBetrag = dblBetrag + Abs(Zelle.Value)
End If
Next
verborgener_Wert = dblBetrag
End Function
Wäre nicht diese Absolut, könnte man auch die Summe alle Zellen minus die Summe der versteckte Zellen errechnen: .SpecialCells(xlCellTypeVisible)
VG
Yal
Anzeige
AW: vielen Dank! owT
02.08.2022 16:23:18
Peter
AW: Funktion, nur für bestimmtes workbook
02.08.2022 16:27:32
Rudi
Hallo,
was soll das?
Bei mir funktioniert z.B. =SUMME(WENNFEHLER(ABS(Tabelle2!A2:H7);0)) egal ob Zeilen/Spalten ausgeblendet sind oder nicht.
Bei dir evtl. als Matrixfunktion.
Gruß
Rudi
AW: Funktion, nur für bestimmtes workbook
02.08.2022 16:30:39
Peter
Hallo Rudi
Mit dieser Funktion identifiziere ich Zellen, die ausgeblendet sind und einen Wert enthalten. In diesem Fall muss ich diese einblenden.
Gruss, Peter
AW: Funktion, nur für bestimmtes workbook
02.08.2022 16:32:31
Rudi
Mit dieser Funktion identifiziere ich Zellen, die ausgeblendet sind und einen Wert enthalten. In diesem Fall muss ich diese einblenden.
das geht aus der Function nicht hervor.
AW: Funktion, nur für bestimmtes workbook
02.08.2022 16:36:06
Peter
... das macht dann eben nicht die Funktion :-)
Anzeige
sofortige Behandlung?
03.08.2022 10:27:48
Yal
Hallo Peter,
vielleicht wäre dann eine Prüfung inkl. Behandlung zielgerichteter.
Folgende Code prüft, ob eine ganze Zeile oder ganze Spalte selektiert wurde (und nur eine) und gehe darin über einzelne Zelle. Hat diese Zelle eine Wert und die Spalte/Zeile ausgeblendet, dann wird diese eingeblendet.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim A
'wenn eine einzelne ganze Zeile oder Spalte markiert wird
A = Split(Target.Address, ":")
If UBound(A) > 0 Then If A(0) = A(1) Then verborgenerWert_anzeigen Target, IsNumeric(Replace(A(0), "$", ""))
End Sub
Public Sub verborgenerWert_anzeigen(ByVal Target As Range, istZeile As Boolean)
Dim Z As Range
If istZeile Then
'Behandlung alle Zelle und entsprechende Spalten in der selektierten Zeile
For Each Z In Range(Target.Cells(1), Cells(Target.Row, Columns.Count).End(xlToLeft)).Cells
If Z.Value  0 Then Z.EntireColumn.Hidden = False
Next
Else
'Behandlung alle Zelle und entsprechende Zeilen in der selektierten Spalte
For Each Z In Range(Target.Cells(1), Cells(Rows.Count, Target.Column).End(xlUp)).Cells
If Z.Value  0 Then Z.EntireRow.Hidden = False
Next
End If
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige