2017-08-07 9 views
0

Ich lerne und schreibe Excel VBA-Funktionen für meine Bedürfnisse, und ich bin fest (ziemlich sicher ist es einfach, aber ich konnte den Fehler nicht herausfinden, wie Excel nur zurückgibt #VALUE als eine Fehlermeldung) Ich habe eine VBA-Funktion geschrieben, um einige Daten zurückzugeben, und alles ist in Ordnung bis zum Ende. Ich habe die Ergebnisse in einer Sammlung (gewählt), aber ich kann nicht die Funktion schreiben die Ergebnisse auf Zellen in der gleichen Zeile. Ich versuche die range.offset in einer for-Schleife zu verwenden:Rückgabe von Ergebnissen von einer Funktion zu Zellen mit Offset

For t = 1 To chosen.Count 
Application.Caller.Offset(0, t).Value = chosen(t) 
Next t 

so für 1, ich möchte, den Wert, ausgewählt aus (1) in die Zelle auf der rechten Seite derselben Zeile zurückgeführt werden. dann für 2 wird es die zweite Zelle auf der rechten Seite usw. gehen.

Antwort

1

Eine UDF oder benutzerdefinierte Funktion, die als Formel verwendet wird, kann den Wert einer anderen Zelle nicht beeinflussen.

Wenn Sie jetzt ein Array von Werten in einem Bereich platzieren möchten, wählen Sie einfach die Zellen für die Ausgabe aus und bestätigen Sie mit Ctrl-Shift-Enter.

Mit dieser Funktion, die ein Array zurückgibt:

Function myArr() As Variant() 
myArr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) 
End Function 

ich wählen A1: I1 mit A1 aktiv.

enter image description here

Dann gebe ich

=myArr() 

in der Bearbeitungsleiste und drücken Sie Ctrl-Shift-Enter statt eingeben. Excel wird die Formel in alle neun Zellen eingeben und {} um die Formeln setzen. Das Array wird dann in diese neun Zellen eingefügt.

enter image description here

+0

ich eine Sammlung statt eines Arrays haben, ist es wichtig? Wenn ich die Funktion mit 'myArr = selected' oder' myArr = selected() 'beende, erhalte ich den Fehler #VALUE. – Ugur

+0

Pushed die Sammlung in ein Array und es hat funktioniert. Danke trotzdem. – Ugur

Verwandte Themen