der Code:
Dim c As Range
Set c =
Workbooks("GUV").Sheets("Aufwand").Range("A:A").Find(What:="alter
Wert", LookIn:=xlValues)
If Not c Is Nothing Then
c.Activate
ActiveCell.value = "neuer Wert"
End If
erzeugt in der Zeile
ActiveCell.value = "neuer Wert"
den
Laufzeitfehler -2147417848 (80010108)
Automatiserungsfehler
Das aufgerufene Objekt wurde von den Clients getrennt
Kann mir bitte jemand sagen, was ich hier falsch mache?
Friedrich Keese schrieb:
Es könnte sein, dass das Blatt auf dem sich die Zelle befindet nicht das
aktive ist.
Schreibe direkt in die Zelle:
If Not c Is Nothing Then
c.value = "neuer Wert"
End If
--
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -
>Grüezi Friedrich
Hallo Thomas,
vielen Dank für Dein Feedback.
>Schreibe direkt in die Zelle:
[...]
Das habe ich ausprobiert, die besagte Fehlermeldung kommt aber
trotzdem immer noch.
Was mir erst jetzt azufgefallen ist: Vor der bereits erwähnten
Fehlermeldung kommt vorneweg der Laufzeitfehler -2147417848, diesmal
mit dem Wortlaut: Die Methode Value für das Objekt Range ist
fehlgeschlagen.
Evtl. ist es auch von Bedeutuung zu erwähnen, daß ich in meinem
"echten" Sourcecode den Inhalt einer Textbox eines Userforms in eine
Zelle schreiben will, also so:
c.value = txtNeuerWert
Wie lässt sich dieser Laufzeitfehler -2147417848 bitte abstellen?
Nachtrag:
>c.value = txtNeuerWert
>
>Wie lässt sich dieser Laufzeitfehler -2147417848 bitte abstellen?
Kann es sein, daß man an eine Zelle keinen Text übergeben kann,
sondern nur Zahlen?
Ich stehe vor einem großen Rätsel. Hoffentlich findet jemand die
Lösung.
du musst die Mappe mit der Dateiendung '.xls' angeben:
Workbooks("GUV.xls").
bei meinen Versuchen läuft er Code einwandfrei durch.
--
Mit freundlichen Grüßen
Melanie Breden
_____________________
[Microsoft MVP für Excel]
>Hallo Friedrich,
Hallo Melanie,
vielen Dank für Dein Feedback.
>du musst die Mappe mit der Dateiendung '.xls' angeben:
>Workbooks("GUV.xls").
Gut, das habe ich entsprechend abgeändert.
>bei meinen Versuchen läuft er Code einwandfrei durch.
Bei mir leider immer noch nicht.
Kann es sein, daß es sich um ein bekanntes Problem speziell von Excel
XP handelt, das ansonsten in keiner anderen Version von Excel
auftritt?
Außerdem fälllt mir auf, daß der Fehler vorzugsweise dann auftritt,
wenn ich den Code mit <F8> zeilenweise ausführen lasse. Bei "normaler
Verwendung" der Mappe bzw. des Makros erhalte ich den Laufzeitfehler
nur selten.
Ressourcenmangel würde ich ausschließen, denn auf einem AMD Athlon
mit 1,4 GHz, 512 MB RAM und Windows 2000 müsste sich Excel sehr
wohlfühlen.
In welcher Richtung könnte ich denn sonst noch den Fehler suchen?
Friedrich Keese schrieb:
>
> Was mir erst jetzt azufgefallen ist: Vor der bereits erwähnten
> Fehlermeldung kommt vorneweg der Laufzeitfehler -2147417848, diesmal
> mit dem Wortlaut: Die Methode Value für das Objekt Range ist
> fehlgeschlagen.
>
> Evtl. ist es auch von Bedeutuung zu erwähnen, daß ich in meinem
> "echten" Sourcecode den Inhalt einer Textbox eines Userforms in eine
> Zelle schreiben will, also so:
>
> c.value = txtNeuerWert
Hmm, das Makro ist also Teil einer Userform?
Vielleicht hilft dies noch etwas nch:
c.Text = Me.txtNeuerWert
Wo liegt denn die Datei? Auf einem Server im Netzwerk?
Dann könnte dort noch das Problem liegen.
Du öffnest die Mappe im Voraus? Oder schreibst Du 'direkt' mit dem Code in
die Zelle? Vielleicht hilft es dann,die Mappe vorgängig zu öffnen.
>Grüezi Friedrich
Hallo Thomas,
>> c.value = txtNeuerWert
>
>Hmm, das Makro ist also Teil einer Userform?
Ja, richtig. Die Codezeilen sind dem CommandButton_Click Event
zugeordnet. Dieser CommandButton befindet sich ebenfalls auf dem
Userform, wie auch mehrere Textfelder.
>Wo liegt denn die Datei? Auf einem Server im Netzwerk?
Die Datei befindet sich auf einem lokalen PC, ohne jegliche
Netzwerkanbindung.
>Dann könnte dort noch das Problem liegen.
>Du öffnest die Mappe im Voraus? Oder schreibst Du 'direkt' mit dem Code in
>die Zelle? Vielleicht hilft es dann,die Mappe vorgängig zu öffnen.
Die Sache läuft so ab:
Ich starte händisch Excel und lade eine Datei. Bei der Sub
Workbook_Open() habe ich die Anweisung frmMenu.Show eingetragen.
Auf diesem Menüformular gibt es mehrere CommandButtons. Einer dieser
Buttons ist für das Laden des Eingabemasken-Userforms zuständig. Auf
dieser Eingabemaske wiederum befindet sich einige weiterer
CommandButton.
Der Laufzeitfehler tritt auf, wenn dieser CommandButton von dem
Eingabemaskenformular angeclickt wird.
Aufgabe dieses Commandbuttons wiederum ist es, die Inhalte der
Textfelder der Eingabemaske in die Zellen eines Sheets dieses
Workbooks zu schreiben. Dieses Workbook hat ganz am Anfang beim Öffnen
auch das Userform mit dem Hauptmenü geladen.
Würde der Code korrekt ablaufen, würden nicht nur die Zellinhalte
geändert, sondern zusätzlich alle Sheets dieses Workbooks
abgespeichert. Nur leider kommt der entsprechende Code nie zur
Ausführung, denn bereits beim Aktualisierung der Zellinhalte erhalte
ich den bereits beschriebenen Laufzeitfehler.
>Vielleicht hilft dies noch etwas nch:
>c.Text = Me.txtNeuerWert
Hier erhalte ich den Laufzeitfehler 424, Objekt erforderlich.
Dieser Laufzeitfehler 424 tritt auch dann auf, wenn ich es alternativ
mit
c.Text = frmEntryForm.txtNeuerWert
versuche.
Was könnte ich sonst noch ausprobieren?
"Friedrich Keese"
> Kann es sein, daß es sich um ein bekanntes Problem speziell von Excel
> XP handelt, das ansonsten in keiner anderen Version von Excel
> auftritt?
läuft die Prozedur denn in anderen Versionen?
> Außerdem fälllt mir auf, daß der Fehler vorzugsweise dann auftritt,
> wenn ich den Code mit <F8> zeilenweise ausführen lasse. Bei "normaler
> Verwendung" der Mappe bzw. des Makros erhalte ich den Laufzeitfehler
> nur selten.
d.h. der Fehler tritt nicht immer auf?
> In welcher Richtung könnte ich denn sonst noch den Fehler suchen?
Wie ist c deklariert?
Kannst du die Werte der verwendeten Variablen während der Laufzeit überprüfen?
Welchen Wert hat 'txtNeuerWert' wenn der Fehler auftritt?
Ist die erste UserForm entladen?
Evtl. kannst du eine Demo-Datei zum Download bereitstellen.
Bitte nicht als Dateianhang in diese NG senden.
Friedrich Keese schrieb:
>
>>Wo liegt denn die Datei? Auf einem Server im Netzwerk?
>
> Die Datei befindet sich auf einem lokalen PC, ohne jegliche
> Netzwerkanbindung.
>
> Ich starte händisch Excel und lade eine Datei. Bei der Sub
> Workbook_Open() habe ich die Anweisung frmMenu.Show eingetragen.
> Auf diesem Menüformular gibt es mehrere CommandButtons. Einer dieser
> Buttons ist für das Laden des Eingabemasken-Userforms zuständig. Auf
> dieser Eingabemaske wiederum befindet sich einige weiterer
> CommandButton.
Das heisst, Du greifst auf die momentan aktive Mappe zu, ohne in eine
andere Mappe etwas schreiben zu wollen?
> Was könnte ich sonst noch ausprobieren?
Abgewandelt aus deinem ersten Posting:
Dim c As Range
Set c =
ActiveWorkbook.Sheets("Aufwand").Range("A:A").Find(What:="alter
Wert", LookIn:=xlValues)
If Not c Is Nothing Then
c.value = "neuer Wert"
End If
--
Hallo zusammen,
ich möchte mich bei allen Helfern bedanken, die zu meiner
Fragestellung einen Lösungsvorschlag gepostet haben.
Mittlerweile konnte ich das Problem erfolgreich beheben.
Es waren 2 Maßnahmen wesentlich:
1.) Ich habe am Anfang der Prozedur die Anweisung
On errror resume next
eingefügt.
2.) Anstelle von
c.value = txtValue.value
verwende ich nun alternativ die Anweisung
Cells.Replace What:="Neuer Wert", Replacement:="", LookAt:=xlPart,
SearchOrder:=xlByRows
Seither ist der Laufzeitfehler nicht mehr aufgetreten.