2016-06-02 9 views
0

Ich habe eine benutzerdefinierte Funktion in Excel 2010, die eine Reihe von Daten betrachtet und summiert (der tatsächliche Code ist für dieses Problem nicht relevant). Normalerweise funktioniert es einwandfrei, außer wenn ich meinen Quellcode ändere oder die Arbeitsmappe zum ersten Mal öffne. Wenn dies geschieht, hat jede Zelle, die die UDF verwendet, nur einen #NAME? Fehler stattdessen.Benutzerdefinierte Funktionen zeigen #NAME? Fehler beim Start der Arbeitsmappe

Ich habe versucht, mit der Werkzeug-Taste neu zu berechnen, F9 drücken, und eine Formel in eine andere Zelle eingeben und Enter drücken.

Was es funktioniert, ist die Auswahl einer der UDF-Zellen, klicken Sie in der Bearbeitungsleiste, dann drücken Sie die Eingabetaste (d. H. Keine Änderungen vorgenommen), dann berechnen sie alle richtig. Was ALSO auch funktioniert, geht in den Quellcode und macht eine einfache Änderung (z. B. Hinzufügen einer leeren Zeile in einem Modul), DANN mit einer der zuvor erwähnten Methoden, um ein Neuberechnungsereignis auszulösen.

Wenn ich die Arbeitsmappe lade, werden Makros zunächst deaktiviert, bis ich auf die Schaltfläche "Aktivieren" klicke. Zu diesem Zeitpunkt werden die zuvor gespeicherten Werte in #NAME umgewandelt? Error. Es scheint, dass es etwas damit zu tun hat, aber ich habe keine Erlaubnis, Makros dauerhaft dort zuzulassen, wo ich arbeite, und wenn ein anderer Benutzer es in seinem Konto öffnet, hat er die gleichen Probleme, die ich jetzt habe.

Hat jemand das schon mal gesehen? Gibt es eine Möglichkeit, dies zu lösen?

+0

Ja, ich hatte das gleiche Problem einmal (in einer Unternehmensumgebung mit virtuellen Desktops auf einer Citrix-Farm gehostet). Haben Sie etwas dagegen zu prüfen, ob das Folgende es löst. Navigieren Sie zu 'Data' ►' Connections' ► 'Refresh All' ►' Refresh All'. – Ralph

Antwort

0

Ich hatte ein ähnliches Problem mit einem meiner Makros, die Informationen aus einem Bereich kopiert und in eine Tabelle einfügt. Da die Tabelle in meinem Fall von Seriennummern besteht, die alle haben entweder eine 1 oder eine 2 in ihnen, habe ich das folgende Bit zu meinem Unter so dass der Fehler weggeht:

With .DataBodyRange 
     .Replace What:="1", Replacement:="1" 
     .Replace What:="2", Replacement:="2" 
    End With 

Sie etwas Ähnliches setzen könnte in die Worksheet_Activate-Funktion ... Ich weiß, es ist keine "echte" Antwort und funktioniert stattdessen nur um das Problem, aber es erledigt die Arbeit. Hoffentlich kann jemand eine bessere Lösung anbieten und wir können beide etwas lernen.

+0

Ich habe versucht, die Methode zum Ersetzen von Suchen zu finden, und es hat nicht funktioniert. Ich habe auch versucht, ein Makro zu verwenden, um die letzte Zeile in der Tabelle zu löschen, und das hat gerade jede Instanz meiner Formel auf #VALUE gedreht. Interessant ist, wenn ich manuell eine leere Zeile lösche, alles neu berechnet. Warum sollte man manuell arbeiten, aber ein Makro, das genau dasselbe macht, würde nicht funktionieren? – SandPiper

Verwandte Themen