HERBERS Excel-Forum - das Archiv
Optionale Zelle in Funktion gibt Wert nicht wieder
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"

AW: Optionale Zelle in Funktion gibt Wert nicht wieder
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

AW: Optionale Zelle in Funktion gibt Wert nicht wieder
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

AW: Optionale Zelle in Funktion gibt Wert nicht wieder
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
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 ...
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 …

Ne Riesen Krücke ^^
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

Optionale Zelle in Funktion gibt Wert nicht wieder
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"

AW: Optionale Zelle in Funktion gibt Wert nicht wieder
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

AW: Optionale Zelle in Funktion gibt Wert nicht wieder
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

AW: Optionale Zelle in Funktion gibt Wert nicht wieder
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
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 ...
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 …

Ne Riesen Krücke ^^
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

Bewerten Sie hier bitte das Excel-Portal