Microsoft Excel

Herbers Excel/VBA-Archiv

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

Anwendung FormulaLocal | Herbers Excel-Forum


Betrifft: Anwendung FormulaLocal von: Stefan
Geschrieben am: 07.01.2010 12:22:19

Hallo zusammen,

in meinem Beitrag vom 30.12.09 zum Thema vlookup hatte mir Daniel den Vorschlag gemacht, vorhandene excel-Formeln mittels FormulaLocal in den VBA-Code einzusetzen. Er hatte folgendes Beispiel angeführt:

Sub Test()
With Range(Cells(1, 2), Cells(1,1).End(xldown).Offset(0,1))
.FormulaLocal = "=WENN(ISTNV(SVERWEIS(A1;Tabelle1'!D:E;2;FALSCH))=WAHR;SVERWEIS(A1;'Tabelle2'!A: B;2;FALSCH);SVERWEIS(A1;'Tabelle1'!A:B;2;FALSCH))"
.Formula = .Value
End With
End Sub


Jetzt verstehe ich nicht, was am Ende der ersten Zeile das .Offset(0,1) bedeutet. Könnte mir das bitte jemand kurz erläutern?

In einem Anderen Makro habe ich mal das .FormulaLocal ohne .Offset getestet und es scheint zu funktionieren:

Private Sub CommandButton2_Click()
   
   Dim LastRow As Integer
   LastRow = Range("a1").End(xlDown).Row
   
   With Range(Cells(3, 3), Cells(LastRow, 3))
      .FormulaLocal = "=WENN(ISTNV(VERGLEICH(A3;'Tabelle Daten'!A:A;0))=WAHR;0;1)"
      .Formula = .Value
   End With
End Sub


Könnte bitte mal jemand diesen Code anschauen und mir sagen, ob ich noch einen Gedankenfehler habe?

Danke und Gruß

Stefan

  

Betrifft: AW: Anwendung FormulaLocal von: Rudi Maintaire
Geschrieben am: 07.01.2010 12:29:32

Hallo,
.Offset(0,1)=1 Spalte weiter rechts
Hast du keine Hilfe-Datei?

Code sieht OK aus. Teste es doch einfach.

Gruß
Rudi


  

Betrifft: AW: Anwendung FormulaLocal von: Stefan
Geschrieben am: 07.01.2010 12:34:50

Hallo Rudi,

danke für die Antwort.

Dass .Offset(x, x) ein Verschieben um eine bestimmte Zeilen, oder Spaltenanzahl bedeutet, ist mir klar.

Unklar ist mir aber, was es in diesem Makro bewirkt.

Gruß

Stefan


  

Betrifft: AW: Anwendung FormulaLocal von: Daniel
Geschrieben am: 07.01.2010 13:29:03

HI
der Code mit Offset benötigt keine Variable LastRow.
denk mal scharf nach, warum das so sein könnte.
Schau dir auch mal genau die einzelnen Spaltennummern an.
vielleicht kommst du dann selber drauf, was da genau passiert.

gruß, Daniel


  

Betrifft: AW: Anwendung FormulaLocal von: Stefan
Geschrieben am: 07.01.2010 14:31:58

Ich versuche mal, es zu beschreiben und teile hierzu die Elemente der betreffenden Zeile in mehrere Zeilen auf:

Range(Cells(1, 2),_______Benennt als erste Zelle des Bereichs die Zelle B1
Cells(1, 1).End(xldown)___Sucht die letzte Zelle der 1. Spalte
Offset(0, 1)____________Geht eine Spalte nach Rechts

Wenn in meinem Arbeitsblatt in den Zellen A1 bis A3 Werte stehen, geht der für die with-Anweisung definierte Range-Bereich in meinem Arbeitsblatt von Zelle B1 bis Zelle B3.

Der Grund für meine Nachfrage war, dass vorher mein Makro nicht funktionierte. Der Fehler war, dass ich den Offset um eine Spalte weiter setzten musste.
Jetzt habe ich das Makro umgeschrieben und erneut getestet. Es funktioniert jetzt auch mit Offset:

Private Sub CommandButton2_Click()
   With Range(Cells(3, 3), Cells(1, 1).End(xlDown).Offset(0, 2))
      .FormulaLocal = "=WENN(ISTNV(VERGLEICH(A3;'Lieferantenliste Status 0 bis 7'!A:A;0))=WAHR; _
0;1)"
      .Formula = .Value
   End With
End Sub
Bitte entschuldigt meine (für euch) naiven Fragen, und nochmal Danke für's Helfen. Ich habe mit VBA einfach erst angefangen und muss noch viel lernen.

Stefan



Beiträge aus den Excel-Beispielen zum Thema "Anwendung FormulaLocal"