AW: Formel zu VBA
01.07.2013 10:44:26
Klaus
Hi Tom,
mal ein Beispiel. Das "Macro1" ist einfach ein Rekordercode. Das Makro PerVBAbitte() ist nur leicht umgeschriebener Rekordercode. Im "Width" siehst du die Zellen-Referenzierung, den RekorderCode für "Kopieren, dann Inhalte einfügen" habe ich getauscht gegen die kürzere VBA-Variante ".value = .value", die das gleiche erledigt. Du siehst, in Summe sind das nur ein halbes dutzend Zeilen VBA.
Option Explicit
'so sieht das aufgezeichnete Makro aus
Sub Macro1()
' Macro1 Macro
Range("C7").Select
ActiveCell.FormulaR1C1 = _
"=INDEX(zusammen!C,MATCH(RC1,zusammen!C1,)-1+IF(MOD(ROW(R[-6]C1),5)=0,5,MOD(ROW(R[-6]C1) _
,5)))"
Range("C7").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C8").Select
End Sub
'Unsere Formel-zu-Makro-Variante in ganz einfach:
Sub PerVBAbitte()
With Sheets("woche").Range("C7:E22") '**** Bereichs-Angabe
.FormulaR1C1 = "=INDEX(zusammen!C,MATCH(RC1,zusammen!C1,)-1+IF(MOD(ROW(R[-6]C1),5)=0,5,MOD( _
ROW(R[-6]C1),5)))" '**** die Formel aus dem Makrorekorder von oben
ActiveSheet.Calculate '**** berechnen der Formeln erzwingen - kann auch wegfallen, wenn du _
Berechnungen auf automatisch hast
.Value = .Value '**** Aus den Formeln Werte machen (einfach, schnell, kurz)
End With
End Sub
Disclaimer: das ist im vergleich zu hary's sicherlich die schlechtere Lösung, um die beschriebene Aufgabe zu lösen. Dies soll nur zeigen, wie einfach sich eine Formellösung in VBA übertragen lässt.