Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Optionale Zelle in Funktion gibt Wert nicht wieder

Optionale Zelle in Funktion gibt Wert nicht wieder
02.10.2015 09:08:58
PaBa
Guten Morgen zusammen,
ich hoffe ihr könnt mir bei meinem Problem helfen:
Ich habe eine Funktion, die einen Wert wiedergibt. Sofern ein optionale Hilfszelle markiert wird (z.B. "A4"), soll der VBA Code weitere Informationen in diese Hilfszelle schreiben. Ich habe schon alles mögliche getestet, aber aus irgendeinem Grund schreibt er das nicht in die Hilfzeile. Da ich echt nicht weiß wo mein (Denk)fehler steckt, bin ich für jede Hilfe/Tipp dankbar!
Viele Grüße
PaBa

Public Function Zellbereich(Optional Hilfszelle As Variant) As Variant
Dim x As Variant
Zellbereich = "test"
If IsMissing(Hilfszelle) Then
Exit Function
Else
Hilfszelle = "test"
End If
End Function

Ich habe auch alternativ folgendes getestet, aber leider funktioniert das auch nicht.
Set x = ActiveSheet.Cells(Hilfszelle.Row, Hilfszelle.Column)
MsgBox x.Address
x = "test"

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

Betreff
Datum
Anwender
Anzeige
AW: Optionale Zelle in Funktion gibt Wert nicht wieder
02.10.2015 09:39:36
Jack_d
Moin Moin,
also ich versteh noch nicht ganz was du mit der Function machen willst.
Zuerst würde ich Den Zellbereich als Range dimmen (sofern du das ganze als UDF "betreiben willst"
Dann
Musst du den Rückgabewert (Function- Name) sauber haben.
Public Function Zellbereich(Optional Hilfszelle As Variant) As Variant
Dim x As Variant
'Zellbereich = "test"
If IsMissing(Hilfszelle) Then
Zellbereich = "test1"
Exit Function
Else
Zellbereich = "test2"
End If
End Function
Dann musst du mir noch erläutern, was du mit isMissing bezwecken willst?
Grüße

Anzeige
AW: Optionale Zelle in Funktion gibt Wert nicht wieder
02.10.2015 09:51:16
PaBa
Hallo Jack,
erst ein mal vielen Dank für deine Antwort. Vielleicht habe ich meine Absichten mit der Funktion nicht deutlich genug formuliert. Daher ein paar Erläuterungen:
Ich nutze die Funktion um Berechnungen anzustellen und das Ergebnis auszugeben (Zellbereich, z.B. in "A1"). Zusätzlich dazu möchte ich in einer optionalen Hilfszelle (wenn der User diese festlegt, z.B. "A3"), dass zusätzlich die Berechnungsschritte in die Hilfszeile geschrieben werden. Damit möchte ich erreichen, dass die Berechnungsschritte transparenter werden.
Das "IsMissing" soll prüfen, ob der User eine Zelle für die Hilfszelle angegeben hat. Wenn nicht, dann brauche ich auch nciht die Berechnungsschritte darstellen, ansonsten schon ;)
Viele Grüße
PaBa

Anzeige
AW: Optionale Zelle in Funktion gibt Wert nicht wieder
02.10.2015 10:09:06
Nepumuk
Hallo,
es ist grundsätzlich nicht möglich eine andere Zelle als die Zelle aus der die Funktion aufgerufen wird zu ändern.
Gruß
Nepumuk

Das geht so leider ni
02.10.2015 10:26:32
Jack_d
Es ist immer nur möglich einen WErt zurück zu geben.
Grüße

Das geht ggf schon, ist aber nichts für ...
02.10.2015 16:31:58
Luc:-?
…VBA-Anfänger, PaBa;
siehe hier eine Anmerkung dazu. In deinem speziellen Fall dürfte es aber noch komplizierter wdn und es ist zu fragen, ob der Aufwand das lohnt. Aber viell klappt's ja mit Jack's „Krücke“… ;-)
Gruß, Luc :-?
Besser informiert mit …

Anzeige
Ne Riesen Krücke ^^
02.10.2015 11:30:04
Jack_d
Hab mir mal was ausgedacht. Ist aber zugegebenermaßen sehr gewöhnungsbedürftig.
1. Code im Blatt aus dem die Formel aufgerufen werden soll (Im zweifel dann hinter alle Blätter)
Sub Worksheet_Change(ByVal Target As Range)
If Left(Target.FormulaLocal, 13) = "=Zellbereich(" Then
Pos1 = InStr(Target.FormulaLocal, "(")
Pos2 = InStr(Target.FormulaLocal, ";")
Pos3 = InStr(Target.FormulaLocal, ")")
If Pos2 = 0 Then
'Ohne Hilfe - Hier nix machen
Else
PosWZelle = Mid(Target.FormulaLocal, Pos1 + 1, Pos2 - Pos1 - 1)
PosHZelle = Mid(Target.FormulaLocal, Pos2 + 1, Pos3 - Pos2 - 1)
Wert = Range(PosWZelle)
Range(PosHZelle) = Wert & " * (3 + 3) / 7"
'Mit Hilfe
End If
Else
End If
End Sub
2. Code für die UDF (im allg. Modul)
Public Function Zellbereich(ByVal Wertebereich As Range, Optional Hilfszelle As Range) As  _
Variant
Dim Wert As Double
If Wertebereich Is Nothing Then
Exit Function
Else
Wert = Wertebereich * (3 + 3) / 7
End If
Zellbereich = Wert
End Function
Die Formelhilfe muss dann entsprechend der Formel immer angepasst werden.
CAVE: alles soweit ohne große Fehlerbehandlung. Dies muss natürlich noch ergänz werden.
Auch aufgrund der kürze ohne hinreichendes "Dimmen"
Mal schauen wie es ankommt ^^
Bis dahin
Grüße
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige