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

Worksheet Function

Worksheet Function
02.11.2018 09:48:47
emil
Hallo zusammen,
ich hab zwar schon viel mit VBA gemacht, aber eine Worksheet Function habe ich noch nie geschrieben. Daher ist das Problem wahrscheinlich recht banal.
In der Function soll eine Aufgabe mit einem Ergebnis verglichen werden. Am Ende soll dann _ einfach die Anzahl der positiven Vergleiche ausgegeben werden. Folgender Code:

Function Verknuepfung(Aufgabe As Range, Ergebnis As Range, rRange As Range)
Dim rCell As Range
Dim strAufgabe As String
Dim strErgebnis As String
Dim intZaehler As Integer
strAufgabe = Aufgabe.Value
strErgebnis = Ergebnis.Value
For Each rCell In rRange
If rCell.Value = strAufgabe And Cells(rCell.Row, Ergebnis.Column).Value =  _
strErgebnis Then
intZaehler = intZaehler + 1
End If
Next rCell
Verknuepfung = intZaehler
End Function
Mein Problem liegt bei der fett geschriebenen Stelle. Wie kann ich hier das "Ziel-Workbook" ansprechen?
Vielen Dank schonmal für die Hilfe.
Viele Grüße
Emil

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet Function
02.11.2018 10:24:23
EtoPHG
Hallo Emil,
VBA gut?
Ich verstehe 3 Sachen nicht:
1. Was verstehst du unter einer Worksheet Function? Ich kenne Function (ohne den Zusatz Worksheet. Worksheet ist ein Objekt, das Methoden hat.
2. Eine Function liefert ein Resultat zurück. In einer Zelle angewandt wird dieser Rückgabewert in die Zelle geschrieben.
3. Was soll das "Ziel-Workbook" jetzt erfüllen? Du kannst in einer Funktion nicht in ein 'anderes' Workbook schreiben!
Also was erwartest du für ein Verhalten von deiner Funktion?
Gruess Hansueli
AW: Worksheet Function
02.11.2018 11:21:55
emil
Hallo Hansueli,
vielen Dank für deine Antwort. Auch vielen Dank, dass du anhand eines dir nicht genehmen Wortes meine Kenntnisse in Frage stellst, sehr hilfreich!
1. Also, dann meine ich eine Function. Mit dem Zusatz Worksheet wollte ich verdeutlichen, dass ich diese nicht innerhalb eines Codeablaufs nutzen möchte, sondern über das Worksheet aufrufen will.
2. Sehr gut, genau das will ich!
3. Ich möchte auch nicht in ein anderes Workbook schreiben, ich möchte aus dem anderen Workbook Informationen ziehen (dieses Workbook nannte ich Ziel-Workbook, vll ist Quell-Workbook oder ähnliches zutreffender). In einem Sub würde ich das z.B. so lösen:

Pfad = Application.GetOpenFilename("Excel-Dateien(*.xls*),*.xls*")
Set ZielWorkbook = Workbooks.Open(Pfad)
Im Foglenden könnte ich auf mein Problem bezogen dann schreiben:
If ZielWorkbook.Sheets(xy).rCell.Value = strAufgabe And ZielWorkbook.Sheets(xy).Cells(rCell.Row, Ergebnis.Column).Value...
In meinem vorhin beschriebenen Code nimmt er zwar diese Information "If rCell.Value = strAufgabe" aus dem Workbook, aus dem ich die Informationen ziehen möchte, die nächste allerdings "Cells(rCell.Row, Ergebnis.Column).Value = strErgebnis" aus dem Workbook in dem ich die Function in die Zelle schreibe.
Ich hoffe, dass war jetzt verständlich geschrieben.
Wenn du hierfür eine Lösung hast, wäre ich dir sehr dankbar!
Grüße
Emil
Anzeige
AW: Worksheet Function
02.11.2018 11:55:03
EtoPHG
Hallo Emil,
Es ist nicht so, dass mir ein Wort nicht genehm ist.
Ich habe vielleicht eine zu hohe Erwartungshaltung an die Selbsdeklaration "gut"
Das diese zu hoch sind, zeigt sich in deinen erneuten Ausführungen.
da rCell ein Bestandteil von rRange ist, muss doch nur die rRange voll qualifiziert übergeben werden. In einer Function sollte nix mit Blatt oder Mappenreferenzierungen stehen, solange deren Parameter als Range übergeben werden.
Die Formel, in der Mappe mit der Function, würde dann in etwa so lauten:
=Verknuepfung(Bereich, Bereich,[ZielBzwQuellMappe]TabelleX!A1:A100)
Wobei die 'unqualifizierten' Bereiche sich automatisch auf die Mappe/Blatt beziehen, in der die Formel steht!
Gruess Hansueli
Anzeige
.Worksheet / .Parent
02.11.2018 11:30:04
Daniel
Hi
Zu deiner Frage:
Wenn du von einem Zellbereich in einer Variable das dazugehörige Tabellenblatt ermitteln willst, geht das mit
RangeVariable.Worksheet

Oder mit
RangeVariable.Parent

Wobei .Parent die allgemeine Funktion ist, um von einem beliebigen Objekt das übergeordnete Objekt zu ermitteln.
In deinem Fall wahrscheinlich:
Ergebnis.Worksheet.Cells(rCell.row, Ergebnis.Column)
Die andere Frage wäre, warum du dir hier die Mühe machst, das bereits vorhandene ZählenWenns nachzuprogrammieren.
Gruß Daniel
Anzeige
AW: .Worksheet / .Parent
02.11.2018 11:43:01
emil
Hallo Daniel,
danke für die Hilfe! Ich hab es jetzt hinbekommen.
Ich muss im weiteren Verlauf noch die Hintergrundfarbe der Zelle beachten. Mit ZählenWenns komm ich da glaube ich nicht weiter, oder?
Gruß
Emil
AW: .Worksheet / .Parent
02.11.2018 12:06:46
Daniel
Hi
richtig. Die Excel-Standardfunktionen sind nicht in der Lage, Formate auszuwerten.
(einzige Ausnahme wäre der Zeilenzustand ein/ausgeblendet in den Funktionen Aggregat und Teilergebnis)
weiterhin solltest du bedenken, dass deine Änderung der Formatierung in Excel keine Neuberechnung des Formelergebnisses auslöst so wie eine Änderung des Zellwertes.
Bei Funktionen, die die Zellfarbe mit einbeziehen, besteht also immer die Gefahr, dass die Formelergebnisse nicht aktuell sind, falls die Zellfarbe nachträglich geändert wurde.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige