Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

fehler beim speichern - zellname existiert nicht

Betrifft: fehler beim speichern - zellname existiert nicht von: t4z
Geschrieben am: 07.08.2008 17:53:12

Hallo Leute,

folgendes Problem:

Will nach zahlreichen Änderungen in Datei A die Änderungen darin speichern. Kurz vor Ende des Speichervorgangs kommt dann die Fehlermeldung

"Microsoft Excel kann die Formel in der Zelle (Name:[Dateiname.xls]Tabellenname!solver_val) nicht konvertieren, da sie eine Funktion enthält, die in dem Dateiformat, in dem Sie speichern, nicht vorhanden ist. Wenn Sie mit der Speicherung fortfahren, wird die Formel und das Ergebnis gespeichert, die Funktion wird jedoch in einen Fehlerwert umgewandelt. ..."

Das Witzige ist, dass der Zellname "solver_val" weder in der Ursprungsdatei A noch in der bearbeiteten Version enthalten ist. Da die Ursprungsdatei fehlerlos speicherbar ist, kann es nur an meinen Änderungen liegen. Ich bin jedoch sprach- und ratlos. Die Datei ist nicht gerade klein und mir bzw meinem Arbeitgeber liegt viel daran, die Datei fehlerfrei zu erhalten. Durch meine Änderungen wurde der Umfang der Datei nicht unbedingt größer. Ich habe fast ausschließlich Sheets, die Ähnliches enthalten je in einem Sheet zusammengefasst.

Viele Grüße, Taz

  

Betrifft: AW: fehler beim speichern - zellname existiert nicht von: Ramses
Geschrieben am: 07.08.2008 20:25:25

Hallo

Vom Solver werden während einer Berechnung viele Namen erstellt und anschliessend wieder gelöscht.
Vermutlich ist das so ein Überbleibsel einer Solver Berechnung

Solche Namen können während des Solver-Einsatzes auftauchen

Tabelle1!solver_adj
Tabelle1!solver_cvg
Tabelle1!solver_drv
Tabelle1!solver_est
Tabelle1!solver_itr
Tabelle1!solver_lhs1
Tabelle1!solver_lin
Tabelle1!solver_neg
Tabelle1!solver_num
Tabelle1!solver_opt
Tabelle1!solver_pre
Sheet1!solver_rel1
Tabelle1!solver_rel2
Tabelle1!solver_rhs1
Tabelle1!solver_rhs2
Tabelle1!solver_scl
Tabelle1!solver_tim
Tabelle1!solver_tol
Tabelle1!solver_typ
Tabelle1!solver_val

Die Liste ist natürlich nicht abschliessend. Vermutlich werden noch mehr temporäre Namen verwendet.

Lass mal das Makro in einer Sicherheitsdatei laufen und schau mal ob beim anschliessenden Speichern der Fehler noch auftritt. Wenn nicht, kannst du das Makro auch in deiner Originaldatei laufen lassen zum korrigieren

Option Explicit

Sub Remove_Solver_Name()
    Dim wkbName As Name
    Dim chkName As String
    'Solver-Zelle die Fehlerverursacht
    chkName = "solver_val"
    For Each wkbName In ThisWorkbook.Names
        If wkbName.Name = "Demo" Then
            MsgBox "Gefunden: " & wkbName.Value
            wkbName.Delete
        End If
    Next
End Sub


Gruss Rainer


  

Betrifft: Korrektur... von: Ramses
Geschrieben am: 07.08.2008 20:26:39

Hallo

Sorry, da ich nicht testen konnte ist der von mir verwendete Name noch drin.
Die Zeile

If wkbName.Name = "Demo" Then

muss natürlich

If wkbName.Name = chkName Then

heissen.

Gruss Rainer


  

Betrifft: AW: Korrektur... von: t4z
Geschrieben am: 08.08.2008 12:31:44

vielen dank für deine hilfe, dies war tatsächlich der schlüssel zum erfolg

allerdings funktionierts dann erst mit activeworkbook.names

des weiteren waren auch zellnamen enthalten, die einen ungültigen bezug hatten und auch nicht über einfügen - namen - definieren aufgelistet werden.

vielleicht interessiert euch dann mein src-code:

Sub Remove_Invalid_Name()
    Dim wkbName As Name
    Dim chkName, shtName As String
    'Zelle die Fehler verursacht
    chkName = "solver"
'    shtName = "Tabelle 1"
    shtName = "Tabelle 2"
    For Each wkbName In ActiveWorkbook.Names
'        If wkbName.Name = chkName Then      ' findet nur namen, die auch auf eine/n zelle/ _
bereich verweisen (warum, weiss ich nicht)
'        If InStr(wkbName.Value, "#REF") <> 0 Then       ' findet alle namen der arbeitsmappe,  _
die ungültige bezüge haben
'        If InStr(wkbName.Name, chkName) <> 0 Then      ' findet ALLE gesuchten namen der  _
arbeitsmappe
        If InStr(wkbName.Value, shtName) <> 0 Then      ' findet ALLE namen in bestimmten sheet
'        If InStr(wkbName.Name, chkName) <> 0 And InStr(wkbName.Value, shtName) <> 0 Then      ' _
 findet ALLE namen in einem sheet mit einem bestimmten namen
            If MsgBox("Name: " & wkbName.Name & vbCrLf & "Referenz: " & wkbName.Value, vbYesNo,  _
"Soll Zellname gelöscht werden?") = vbYes Then
                wkbName.Delete
            End If
        End If
    Next
End Sub




 

Beiträge aus den Excel-Beispielen zum Thema "fehler beim speichern - zellname existiert nicht"