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

mit Funktion Fehlerw. ermitteln, Name m. INDIREKT

mit Funktion Fehlerw. ermitteln, Name m. INDIREKT
24.04.2013 17:06:27
Peter
Hallo zusammen
Am 22.03.2013 18:21:22 mir Tino eine geniale Funktion gepostet, mit der ich Fehlerwerte in Tabellen identifizieren kann.
Hilfreich wäre nun noch, wenn ich die Tabelle nicht zwingend als String eingeben muss, sondern wenn es auch funktioniert, wenn der Tabellenname in einer Zelle steht und ich darauf mittels INDIREKT referenzieren kann.
Wer kann weiterhelfen?
Danke
Peter
Option Explicit
Function ErrZelle(ParamArray varTabelle() As Variant) As String
Dim rng As Range, ArValue, n&, nn&, strFText$, varTab
For Each varTab In varTabelle
If CheckTabelle(varTab) Then
With Sheets(varTab).UsedRange
For Each rng In .Columns
If .Cells.Count > 1 Then
ArValue = rng.Value2
Else
ArValue = rng.Resize(, 2)
ReDim Preserve ArValue(1 To UBound(ArValue), 1 To 1)
End If
For n = 1 To UBound(ArValue)
For nn = 1 To UBound(ArValue, 2)
If IsError(ArValue(n, nn)) Then strFText = strFText & varTab & "!" &  _
rng.Cells(n, nn).Address(0, 0) & "= '" & rng.Cells(n, nn).Text & "'; "
Next nn
Next n
Next
End With
Else
strFText = strFText & ">>>" & varTab & " nicht gefunden! "" Then strFText = Left$(strFText, Len(strFText) - 2)
ErrZelle = strFText
End Function

Function CheckTabelle(ByVal strTabName$) As Boolean
On Error Resume Next
CheckTabelle = ThisWorkbook.Sheets(strTabName).Index  0
On Error GoTo 0
End Function

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit Funktion Fehlerw. ermitteln, Name m. INDIREKT
24.04.2013 20:07:19
Gerd
Hallo Peter,
ändere im Code der Funktion:
With Sheets(CStr(varTab)).UsedRange
u. rufe sie z.B. mit =ErrZelle(A1) auf.
Weshalb denkst du, INDIREKT zu brauchen?
Gruß Gerd

AW: mit Funktion Fehlerw. ermitteln, Name m. INDIREKT
24.04.2013 21:51:00
Peter
Hallo Gerd
Danke für deine Antwort.
Die Anpassung hat noch nicht bewirkt, dass ich mit INDIREKT den Sheetnamen übergeben kann; wenn ich den Namen direkt übergebe, funktioniert es immer noch.
In meinem File, das Tag für Tag gebraucht wird, werden gewisse Tabellennamen gerechnet. Beispielweise rechnet es vom heutigen Tag eine bestimmte Anzahl Tage zurück und das ergbit dann den (numerischen) Tabellennamen (z.B. "0420"; am nächsten Tag "0421", etc.).
Insbesondere in den "aktuellen" Tabellen muss ich ein Fehlerwert schnell entdecken, weshalb es praktisch wäre, wenn ich mit INDIREKT auf die Zelle, in welcher der Tabellenname berechnet wird, bezug nehmen kann.
Gruss, Peter

Anzeige
ErrZelle identifiziert keine Fehler, dafür ist ...
25.04.2013 00:33:55
Luc:-?
…FEHLER.TYP da, sondern stellt alle Fehlerstandorte fest, Peter,
wobei der jeweilige Fehler als Text mit ausgegeben wird. Du benötigst also keine Korrektur der UDF, sondern eine weitere*, die das Ergebnis pro Fehler auf Zellen aufteilt, so dass du die Adressen samt TabBlattName isolieren kannst. Erst danach ist INDIREKT-Einsatz sinnvoll möglich. Aber das müsstest du eigentlich schon am Fktsergebnis erkennen.
* Solche wären zB Splitt und Splint im Archiv!
Gruß Luc :-?

AW: ErrZelle identifiziert keine Fehler, dafür ist ...
25.04.2013 08:10:33
Peter
Hallo Luc
Die UDF ErrZelle ist für mich ausreichend. Es sollte einfach möglich sein, das Argument nicht direkt einzugeben, sondern indirekt.
Wenn ich auf Funciton ErrZelle einen Haltepunkt setze, und dann schrittweise durch die Funktion gehe, ist ersichtlich, dass das Argument mit Hilfe von INDIREKT gar nicht ankommt.
Vielleicht weiss jemand noch weiteren Rat?
Gruss, Peter
Function ErrZelle(ParamArray varTabelle() As Variant) As String
Dim rng As Range, ArValue, n&, nn&, strFText$, varTab
For Each varTab In varTabelle

Anzeige
Du hast geschrieben, ...
25.04.2013 13:09:36
Luc:-?
Hilfreich wäre nun noch, wenn ich die Tabelle nicht zwingend als String eingeben muss, sondern wenn es auch funktioniert, wenn der Tabellenname in einer Zelle steht und ich darauf mittels INDIREKT referenzieren kann.
Dazu ist nur zu bemerken, dass das blanker Unsinn ist, wenn man das so verstehen will, wie du es anscheinend doch meinst. Ich hatte versucht, darin doch noch einen Sinn zu erkennen.
Was meinst du wohl, was INDIREKT als Argument1 benötigt?! Einen String! Steht in Arg1 ein Bezug, wird der String eben aus dieser Bezugszelle geholt und ggf in ein (Range-)Objekt gewandelt. Also ist dein Ansinnen, hier INDIREKT verwenden zu wollen Quatsch. Schreibe in Arg1 von ErrZelle einfach den Bezug, den du in INDIREKT verwenden wolltest.
Merke, eine gut programmierte UDF kann in ihren Hptargumenten alles (Variant ) verwenden, sofern es nicht zwingend ein Bereichsbezug (Range; oder ein anderes Objekt) sein muss! Der hinwiederum akzeptiert alles, was in einer Zelle stehen kann. Ist der Datentyp des Arguments aber zB auf String eingeschränkt, wdn zwar auch Zellbezüge akzeptiert, aber nur, wenn sie Text enthalten oder der Inhalt einfach in Text umgewandelt wdn kann (da entfallen dann schon mal Fehlerwerte!).
Gruß Luc :-?

Anzeige
AW: Du hast geschrieben, ...
25.04.2013 13:43:33
Peter
Hallo Luc
Ich habe in der hochgeladenen Datei nochmals dargestellt, was ich mit INDIREKT erreichen möchte.
Gruss, Peter
https://www.herber.de/bbs/user/85063.xlsm

Gib's zu, du hast nichts verstanden, ...
25.04.2013 14:01:00
Luc:-?
…Peter; ;-]
die offensichtlich von dir angestrebte Lösung lautet → C7:=ErrZelle(B7)
Mann-o-mann!
Gruß Luc :-?

AW: Gib's zu, du hast nichts verstanden, ...
25.04.2013 14:17:50
Peter
Hallo Luc
Ja, jetzt hatte ich ein grosses Black-out. Zum Glück warst du zur Stelle!
Vielen Dank und Gruss, Peter

Bitte sehr! Gruß owT
25.04.2013 14:32:28
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige