ExcelXP rechnet nicht

09/01/2009 - 00:18 von Peter KUTTNIG | Report spam
Hallo NG,
ich verwende ExcelXP und
wenn ich das folgende VBA-Script ausführe,
erscheint in den Zellen B2, C2, D2 der
Fehlerwert "#Name?"

Klicke ich z.B. auf B2, so erscheint in der Eingabezeile
die Formel ÚTEDIF(A2;HEUTE();"y") und erst wenn
ich in der Eingabezeile diese Formel mit ENTER bestàtige,
zeigt EXCEL das richtige Ergebnis in der Zelle B2 an.

Auf der Kartei "Berechnung" ist die Option "Automatisch" aktiviert.
Auch mit der Taste F9 kann ich die Berechnung nicht veranlassen.

Bitte helft mir.
Vielen Dank
Peter

Das vereinfachte VBA-Script lautet:
Sub START()
Dim strBlattname As String
Dim objBlatt As Worksheet
strBlattname = "Neu"
' neues Blatt hinzufügen, hat vorerst den Namen "TabelleX"
Set objBlatt = Worksheets.Add
' Blatt "TabelleX" auf "strBlattName" umtaufen
objBlatt.Name = strBlattname
With ActiveSheet
.Range("A2").Value = CDate("20.9.2000")
.Range("B2").Formula = "ÚTEDIF(A2,HEUTE(),""y"")"
.Range("C2").Formula = "ÚTEDIF(A2,HEUTE(),""ym"")"
.Range("D2").Formula = "ÚTEDIF(A2,HEUTE(),""md"")"
End With
' Objekte auflösen
Set objBlatt = Nothing
End Sub
 

Lesen sie die antworten

#1 Thomas Ramel
09/01/2009 - 06:48 | Warnen spam
Grüezi Peter

Peter KUTTNIG schrieb am 09.01.2009

ich verwende ExcelXP und
wenn ich das folgende VBA-Script ausführe,
erscheint in den Zellen B2, C2, D2 der
Fehlerwert "#Name?"

Klicke ich z.B. auf B2, so erscheint in der Eingabezeile
die Formel ÚTEDIF(A2;HEUTE();"y") und erst wenn
ich in der Eingabezeile diese Formel mit ENTER bestàtige,
zeigt EXCEL das richtige Ergebnis in der Zelle B2 an.



Ja, Excel-VBA 'spricht' englisch; Du verwendest aber die deutschen Namen
der Formeln. Hier noch ein paar Anmerkungen zum Code und ein Vorschlag zur
Lösung des Problems:

Das vereinfachte VBA-Script lautet:
Sub START()
Dim strBlattname As String
Dim objBlatt As Worksheet
strBlattname = "Neu"
' neues Blatt hinzufügen, hat vorerst den Namen "TabelleX"
Set objBlatt = Worksheets.Add



Hier setzt Du eine Objekt-Variable.

' Blatt "TabelleX" auf "strBlattName" umtaufen
objBlatt.Name = strBlattname



(Hier sollstest Du ev. vorgàngig prüfen ob der Name in der Mappe bereits
enthalten ist, sonst làuft der Code in einen Fehler)

With ActiveSheet



...grefst dann aber mit 'ActiveSheet' auf das neue Blatt zu - warum?

.Range("A2").Value = CDate("20.9.2000")
.Range("B2").Formula = "ÚTEDIF(A2,HEUTE(),""y"")"
.Range("C2").Formula = "ÚTEDIF(A2,HEUTE(),""ym"")"
.Range("D2").Formula = "ÚTEDIF(A2,HEUTE(),""md"")"
End With
' Objekte auflösen
Set objBlatt = Nothing



Wenn der Code rein in Excel-VBA làuft ist das Zerstören nicht notwendig -
beim Beenden der Sub geschieht dies automatisch.

End Sub




Hier eine angepasste Variante, mit Einbezug meiner Bemerkungen oben:

Sub START()
Dim strBlattname As String
Dim objBlatt As Worksheet
strBlattname = "Neu"

'prüfen ob der Name in der Mappe bereits enthalten ist
For Each objBlatt In ActiveWorkbook.Worksheets
If objBlatt.Name = strBlattname Then
MsgBox "Dieses Tabellenblatt exisitert bereits in dieser Mappe"
Exit Sub
End If
Next objBlatt

' neues Blatt hinzufügen, hat vorerst den Namen "TabelleX"
Set objBlatt = Worksheets.Add
' Blatt "TabelleX" auf "strBlattName" umtaufen
objBlatt.Name = strBlattname

With objBlatt
.Range("A2").Value = CDate("20.9.2000")
.Range("B2").Formula = "ÚTEDIF(A2,TODAY(),""y"")"
.Range("C2").Formula = "ÚTEDIF(A2,TODAY(),""ym"")"
.Range("D2").Formula = "ÚTEDIF(A2,TODAY(),""md"")"
End With
End Sub



Mit freundlichen Grüssen
Thomas Ramel (@Laptop)

- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]

Ähnliche fragen