Microsoft Excel

Herbers Excel/VBA-Archiv

Objektvariable nicht definiert


Betrifft: Objektvariable nicht definiert von: Ines
Geschrieben am: 18.09.2019 15:35:21

hallo zusammen,

er sagt bei dem

          
          Sub immer das die Objektvariable "Zelle" nicht definiert ist.
          
          Das 
          
          Sub soll die Funktion in allen Zellen der Spalte H ausführen bis zur letzten gefüllten Zeile.   _
          _
          Die letzte Zeile hängt ab vom Letzten Wert in Spalte A.
          
          Kann mir jemand helfen?
          
          
          
          
          Sub PreisänderungNEU()
          Dim Zelle As Range
          Dim Nr As Long, letzteZeile As Long
          
          
          Nr = ActiveCell.Row
          letzteZeile = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
          
          
          For Each Zelle In ActiveSheet.Range("H" & letzteZeile)
          
          Zelle.FormulaLocal = "=WENN(E" & Nr & "=1;F" & Nr & "+G" & Nr & "+0,1;WENN(E" & Nr & "=2;(F" &   _
          _
          Nr & "+G" & Nr & ")*1,2;WENN(E" & Nr & "=3;F" & Nr & "+G" & Nr & "+(WENN(F" & Nr & "<10;(F" &  _
          Nr & "+G" & Nr & ")*0,2;WENN(F" & Nr & ">20;0,5;(F" & Nr & "+G" & Nr & ")*0,08))))))"
          Next Zelle
          End Sub
Danke und VG,
ines
  

Betrifft: AW: Objektvariable nicht definiert von: 1713689.html
Geschrieben am: 18.09.2019 15:40:26

Hallo,

Dim Zelle mal als Object.

Gruss Torsten

  

Betrifft: AW: Objektvariable nicht definiert von: 1713690.html
Geschrieben am: 18.09.2019 15:46:00

hallo Torsten,


das hat leider nicht funktioniert :-(

LG

  

Betrifft: AW: Objektvariable nicht definiert von: 1713691.html
Geschrieben am: 18.09.2019 15:51:16

Jetzt hab ichs erst realisiert. Du musst in VBA die Formel englisch schreiben. Mit FormulaLocal wird sie zwar dann in der Zelle auf deutsch eingetragen. Aber VBA kann nur englisch.
Wenn du einen Uebersetzer brauchst:
https://de.excel-translator.de/translator/

Gruss Torsten

  

Betrifft: AW: Objektvariable nicht definiert von: 1713697.html
Geschrieben am: 18.09.2019 16:03:56

Hi
nein, muss man nicht.
in einem deutschen Excel kann man auch mit VBA die Formel mit .FormulaLocal mit deutschem Formeltext in die Zelle schreiben.
der Translator ist zwar nett, aber eigentlich überflüssig, weil den VBA ja schon eingebaut hat.
man schreibt die Formel so wie man sie haben will in eine Excelzelle und kann sich dann den für VBA benötigten Formeltext im Direktfenster ausgeben lassen:
?Selection.Formula
dabei kann man sich die Formel in allen vier möglichen Schreibweisen (.Formula, .FormulaLocal, .FormulaR1C1, .FormulaR1C1Local) anzeigen lassen.
wer clever ist, lässt bei Formeln mit Text auch gleich die Anführungszeichen verdoppeln, damit er das nicht von Hand machen muss.

Gruß Daniel

  

Betrifft: AW: Objektvariable nicht definiert von: 1713699.html
Geschrieben am: 18.09.2019 16:05:25

Guter Tipp danke .-)

  

Betrifft: AW: Objektvariable nicht definiert von: 1713702.html
Geschrieben am: 18.09.2019 16:09:03

noch ein Tipp:
lass dir die Formel mal in der Z1S1- (bzw R1C1-)-Bezugsart ausgeben.
dann siehst du, dass du in dieser Schreibweise die VAriable NR nicht benötigst und alle Zellen den selben Formeltext haben.
daraus lässt sich dann ableiten, dass man keine Schleife benötigt, sondern die Formel in alle Zellen gleichzeitig schreiben kann.

Gruß Daniel

  

Betrifft: AW: Objektvariable nicht definiert von: 1713693.html
Geschrieben am: 18.09.2019 15:55:36

Hallo Ines,

ich kann die Fehlermeldung nicht nachvollziehen. Habe deinen Code 1 zu 1 laufen lassen - bringt die Fehlermeldung nicht.

Zwei Sachen:
1. Nr = ActiveCell.Row
während der Laufzeit deines Codes ändert sich die Aktive Zelle aber nicht. Ist das z.B. die Zelle A2, dann hast du in allen Formeln immer einen Verweis auf Zeile 2, ich glaube nicht, dass das dein Ansinnen ist.

2. For Each Zelle In ActiveSheet.Range("H" & letzteZeile)
Das wäre eine Schleife über eine einzelne Zelle????
Du meinst wohl eher For Each Zelle In ActiveSheet.Range("H1:H" & letzteZeile)
Wobei ich nicht weiß in welcher Zeile du beginnen willst.

Sub PreisänderungNEU()
  Dim Zelle As Range, letzteZeile As Long
  
  letzteZeile = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
  
  For Each Zelle In ActiveSheet.Range("H1:H" & letzteZeile)
      Nr = Zelle.Row
      
      Zelle.FormulaLocal = "=WENN(E" & Nr & "=1;F" & Nr & "+G" & Nr & "+0,1;WENN(E" _
      & Nr & "=2;(F" & Nr & "+G" & Nr & ")*1,2;WENN(E" & Nr & "=3;F" & Nr & "+G" & Nr _
      & "+(WENN(F" & Nr & "<10;(F" & Nr & "+G" & Nr & ")*0,2;WENN(F" & Nr & ">20;0,5;(F" _
      & Nr & "+G" & Nr & ")*0,08))))))"
  Next Zelle
  End Sub
Gruß Werner
  

Betrifft: AW: Objektvariable nicht definiert von: 1713698.html
Geschrieben am: 18.09.2019 16:04:05

Hi Werner,

ja ich versteh es auch nicht, wenn ich per Hand meinen Code angepasst hab auf deinen, dann hat wieder nichts berechnet. und die Zeile Gelb markiert, hab ich deinen Kopiert und nur bei H die Zeile 2 als Start bestimmt- dann rechnet er jetzt ohne Probleme...

Hm.. komisch, aber vielen Dank für den Gedankenanstoß

LG Ines

  

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T. von: 1713717.html
Geschrieben am: 18.09.2019 17:28:23


  

Betrifft: AW: Objektvariable nicht definiert von: 1713695.html
Geschrieben am: 18.09.2019 15:57:49

HI

bei mir läuft der Code ohne diese Fehlermeldung durch
allerdings läuft deine Schleife nur über die letzte Zelle und ist damit eigentlich überflüssig
die Zeilenummer für die Zellbezüge in der Formel ist immer die Zelle, welche beim Start der des Makros die aktive Zelle ist und dies ändert sich auch über die schleife nicht.
ist das so beabsichtigt?
Gruß Daniel

Beiträge aus dem Excel-Forum zum Thema "Objektvariable nicht definiert"