Microsoft Excel

Herbers Excel/VBA-Archiv

#WERT! ignorieren | Herbers Excel-Forum


Betrifft: #WERT! ignorieren von: Gordon
Geschrieben am: 23.11.2009 09:34:58

Moin Moin,

ich habe zwei Excel-Blätter, wo per Makro Zelleninhalte von der einen in die andere übertragen werden. Als Beispiel:

Blatt2.Range("A1").Value = Blatt1.Range("A1").Value
Blatt2.Range("B1").Value = Blatt1.Range("B1").Value
Blatt2.Range("C1").Value = Blatt1.Range("C1").Value
......
.....
....

Es handelt sich hier im Zahlenwerte und das ganze läuft in einer DO-Schleife. Leider es so, dass auf Blatt1 manchmal in den Zellen auch der Fehlerwert '#WERT!' stehen kann. Wenn dem so ist, kommt immer eine Fehlermeldung und die Prozedur bricht ab.

Ich fände es nun schön, wenn dort dieser Fehlerwert steht, dass dieser ignoriert wird und stattdessen die Zelle auf Blatt2 leer bleibt und das Makro weiterläuft.

Ich hatte es schon so versucht, dass ich mit einer IF-Abfrage vorher schaue, ob der Wert in der jeweiligen Zelle gleich '#WERT!' ist. Leider hat das nicht funktioniert. Hat da jemand vielleicht eine bessere Idee?

Besten Gruß
Gordon

  

Betrifft: geht doch mit Formeln von: Matthias L
Geschrieben am: 23.11.2009 09:46:11

Hallo



Gruß Matthias


  

Betrifft: AW: geht doch mit Formeln von: Detlef
Geschrieben am: 23.11.2009 10:03:06

Hallo Gordon,

If IsError(Blatt1.Range("B1").Value) Then
'nichts tun
Else
Blatt2.Range("B1").Value = Blatt1.Range("B1").Value
End If

Gruß Detlef


  

Betrifft: AW: #WERT! ignorieren von: Oberschlumpf
Geschrieben am: 23.11.2009 09:49:57

Hi Gordon

Hast du auch schon das versucht (ungetestet):

If Blatt1.Range("A1").Text <> "#WERT!" Then
    Blatt2.Range("A1").Value = Blatt1.Range("A1").Value
End If

Dieses Bsp gilt jetzt nur für die Zelle(n) A1.
Kann sein, dass der Code angepasst werden muss, aber wir kennen deine Do/Loop-Schleife nicht.

Hilfts denn?

Ciao
Thorsten


  

Betrifft: vielleicht geht es so,... von: Tino
Geschrieben am: 23.11.2009 09:55:25

Hallo,
wenn ich Deinen Code richtig verstanden habe, müsste es so gehen.

Sub test()
Dim MeAR()
Dim A&, LLetzte&

Dim Blatt1 As Worksheet, Blatt2 As Worksheet
Set Blatt1 = Sheets("Tabelle1")
Set Blatt2 = Sheets("Tabelle2")

With Blatt1
    LLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
    If LLetzte > 1 Then
     MeAR = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
    Else
     ReDim MeAR(1 To 1, 1 To 1)
     MeAR(1, 1) = .Cells(1, 1)
    End If
End With

For A = 1 To UBound(MeAR)
    If IsError(MeAR(A, 1)) Then MeAR(A, 1) = Empty
Next A

With Blatt2
  .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).ClearContents
  .Cells(1, 1).Resize(UBound(MeAR)) = MeAR
End With

End Sub
Gruß Tino