Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

FormulaArrayEigenschaft Range Objekt

FormulaArrayEigenschaft Range Objekt
06.10.2013 10:28:53
Bernd
Liebe Formum-Mitglieder,
meine Arrayfomrel will nicht so, wie ich will. Auch das Einsetzen der geschweiften Klammer in den Code bringt nichts.
Die Fehlermeldung lautet wie folgt:
"Die Formula Array Eigenschaft des Ranges Objektes kann nicht festgelegt werden".
Wer kann und will mir mitteilen, was an dem Code falsch ist?
Sheets("Kobla_Planung").Select
Range("L7").Select
<b>hier stoppt das Makro</b>
Selection.FormulaArray = _
"={IF(R3C[-1]>Periode,0,LEFT('C:\[01 Leerblatt SAP IST 2013.xls]Gemeinkosten'!R6C2:R351C17,16),3,0)+0}"
'
Selection.Copy
Range( _
"L6,L8:L50,L53:L54,L56:L60,L62:L65,L67:L72,L74:L75,L77:L78,L82:L90,L92:L122,L127:L129,L131:L132,L134:L138").Select
Application.CutCopyMode = False
Selection.FillDown
Herzlichen Dank, Bernd

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FormulaArrayEigenschaft Range Objekt
06.10.2013 10:43:00
Doris
Hallo Bernd,
versuchs mal statt mit Array, so

ActiveCell.FormulaR1C1"={IF(R3C[-1]>Periode,0,LEFT('C:\[01 Leerblatt SAP IST 2013.xls]Gemeinkosten'!R6C2:R351C17,16),3,0)+0}"
sollte klappen.
Gruß Doris

@Doris: leider nicht
06.10.2013 11:08:20
Bernd
Hallo Doris, Danke für deinen Tipp, aber leider kommt die Meldung:
"Fehler bei Komplilieren; unzulässige Verwendung einer Eigenschaft."
Dein Code war:
ActiveCell.FormulaR1C1 "={IF(R3C[-1]>Periode,0,LEFT('C:\[01 Leerblatt SAP IST 2013.xls]Gemeinkosten'!R6C2:R351C17,16),3,0)+0}"
Grüße, Bernd

Anzeige
AW: @Doris: leider nicht
06.10.2013 11:56:09
Doris
Hallo Bernd,
um den Fehler nachvollziehen zu können, wäre ein hochgeladene (abgespeckte) Excel mit der Formel hilfreich. Komme so auch nicht weiter.
Gruß Doris

ohne geschweifte Klammern
06.10.2013 17:44:46
KlausF
Hallo Bernd,
habe deine Dateien nicht herunter geladen, aber aus der Erinnerung:
ActiveCell.FormulaArray = "=IF(R3C[-1]>Periode,0,LEFT('C:\[01 Leerblatt SAP IST 2013.xls]Gemeinkosten'!R6C2:R351C17,16),3,0)+0"
Die geschweiften Klammern werden nicht ins VBA übertragen.
Hilft;s?
Gruß
Klaus

Die Verwendung geschweifter Klammern in ...
06.10.2013 14:53:39
Luc:-?
…FormelTexten ist nur für MatrixKonstanten zulässig, Bernd!
Durch den Eintrag in FormulaArray wird festgelegt, dass es sich um eine MatrixFormel handelt, weshalb der Eintrag nur in FormulaR1C1 kontraproduktiv ist, zumal auch die {} nicht entfernt wurden! Ansonsten muss wohl nichts selektiert wdn. Sprich Blatt und ZellBereich direkt an und zwar den ganzen Bereich, in den die Fml soll. Dein Versuch mit .FillDown ist genau dann zum Scheitern verurteilt, wenn es sich nicht um eine 1zellige MxFml, sondern eine für den ganzen „FüllBereich“ handelt. Anderenfalls müsstest du es so machen können, allerdings ist das Copy wohl genauso sinnlos wie die ganzen Select(ion)s!
Gruß Luc :-?

Anzeige
@Luc
06.10.2013 16:18:23
Bernd
Hallo Luc,
ich weiß ja, dass Du wirklich ein Fachmann in Sachen VBA bist und seit Jahren immer gute Lösungen in diesem Forum aufzeigst. Das meine ich Ehrlich und mit tiefem Respekt.
Aber leider überforderst du mich mit deinen Aussagen zu meinem Problem völlig. Ich hätte die große Bitte an Dich, den Code so anzupassen, dass erfunktioniert. Ich wäre dir sehr dankbar dafür.
Grüße, Bernd

Dann musst du warten, heute wenig Zeit! Gruß owT
06.10.2013 16:28:43
Luc:-?
:-?

@Luc: Danke, sehr gerne. owT
06.10.2013 16:39:31
Bernd

AW: @Luc: Tw. geloest; nur kopieren klappt nicht
06.10.2013 18:41:56
Bernd
Hallo Luc,
das Makro funktioniert nun insofern, als dass die gewünschte Arrayformel in die selectierte "Start"-Zelle geschrieben wird (ich hatten einen Links-Befehl vergessen).
Nur leider wird der Befehl des Kopierens in die anderen Zellen nicht ausgeführt.
Du weist doch hier sicherlich Rat. Ich habe die Datei nochmal mit dem aktuellen Makro-Code beigefügt.
' Links-Befehl_neu_061013 Makro ARRAY
Range("T7").Select
Selection.FormulaArray = _
"=IF(R3C[-1]>Periode,0,VLOOKUP(LEFT(RC1,16),LEFT('[01 Leerblatt SAP IST Dummy.xls]Gemeinkosten'!R8C2:R351C17,16),6,0)+0)"
Selection.Copy
Range( _
"T6,T8:T50,T53:T54,T56:T60,T62:T65,T67:T72,T74:T75,T77:T78,T82:T90,T92:T122,T127:T129,T131:T132,T134:T138").Select
Application.CutCopyMode = False
Selection.FillDown
https://www.herber.de/bbs/user/87555.xlsm
Herzlichen Dank vorab, Bernd

Anzeige
Trotz deiner Datei kann ich nicht mehr ...
07.10.2013 00:10:18
Luc:-?
…sagen als zuvor, Bernd,
denn du machst es mir nicht gerade leicht! Es sind dort x Makros enthalten, aber welches ist das relevante? Die Befehle im Umfeld deiner FmlEintragung findet die VBE-Suchfunktion im ganzen VBA-Projekt nicht. Außerdem steht in deinem letzten Beitrag T7, in der Tabelle aber L7! Kann es sein, dass dein Arbeitsstil etwas chaotisch ist? Im VBA-Teil (und bei den Namen) deutet einiges darauf hin… ;-]
Außerdem wäre es sicher hilfreich zu wissen, in welche Richtung FolgeZellen mit der Fml ausgefüllt wdn sollen. Nach FillDown sieht die Tabelle nämlich nicht gerade aus. Es besteht da auch ein kleiner Unterschied zwischen Fill… und Copy → dazu gehört dann nämlichPaste, während Ersteres doch wohl ohne beides auskommen sollte, aber stattdessen die Angabe des FüllBereichs benötigt (Stichwort: MakroRecorder!).
Dann wäre noch gut zu wissen, ob die MatrixFml nur ein oder aber mehrere Ergebnisse (für mehrere blaue Zellen auf 1×) liefern soll.
Übrigens verstehe ich nicht so recht, warum du dich von meiner 1.AW überfordert fühlst, wo du doch das ganze Projekt voller Makros gepackt hast und auch bei der Vergabe und Anwendung von Namen nicht gerade faul warst…!? ;-)
Tipp: Option Explicit schreibt dir der VBE in jedes Modul, wenn du ihm das auch sagst (Variablendeklaration erforderlich). Dann wäre auch sofort aufgefallen, das yClick nicht deklariert war. Das und iClick deklariert man übrigens als vbMsgBoxResult, dann zeigt dir der VBE-Intellisense auch die Möglichkeiten an.
Gruß Luc :-?

Anzeige
AW: Trotz deiner Datei kann ich nicht mehr ...
07.10.2013 08:16:45
Doris
Hallo Bernd,
hab vielleicht doch noch eine Lösuong für Dich. Muss es nur noch testen.
kann aber erst heute Nachmittag.
Gruß Doris

AW: Doris... Danke trotzdem!! (o.T.)
07.10.2013 09:44:16
Bernd

@Luc: habe mein Problem alleine gelöst. ...
07.10.2013 09:21:49
Bernd
... es lag an einer einzigen Zahl:
Range("L7").Select
Selection.FormulaArray = _
"=IF(R3C[-1]>Periode,0,VLOOKUP(LEFT(RC1,16),LEFT('[01 Leerblatt SAP IST Dummy.xls]Gemeinkosten'!R8C2:R351C17,16),3,0)+0)"
Selection.Copy
'mache aus dem Range("L6, ...) ein (Range("L7, ...; siehe Makro unten) und schon klappt es
Range( _
"L7,L8:L50,L53:L54,L56:L60").Select
Application.CutCopyMode = False
Selection.FillDown
Mühsam ist es manchmal, sehr mühsam.
Aber trotzdem Danke für deine Bereitschaft, lieber Luc.
Alles Gute, Bernd

Anzeige
@Luc: habe mein Problem alleine gelöst. ...
07.10.2013 09:21:50
Bernd
... es lag an einer einzigen Zahl:
Range("L7").Select
Selection.FormulaArray = _
"=IF(R3C[-1]>Periode,0,VLOOKUP(LEFT(RC1,16),LEFT('[01 Leerblatt SAP IST Dummy.xls]Gemeinkosten'!R8C2:R351C17,16),3,0)+0)"
Selection.Copy
'mache aus dem Range("L6, ...) ein (Range("L7, ...; siehe Makro unten) und schon klappt es
Range( _
"L7,L8:L50,L53:L54,L56:L60").Select
Application.CutCopyMode = False
Selection.FillDown
Mühsam ist es manchmal, sehr mühsam.
Aber trotzdem Danke für deine Bereitschaft, lieber Luc.
Alles Gute, Bernd

Na, dann iss ja jut... ;-) owT
07.10.2013 16:38:58
Luc:-?
:-?

Anzeige
AW: FormulaArrayEigenschaft Range Objekt
07.10.2013 10:24:40
Doris
Hallo Bernd,
hier noch meine Variante. Über eine Prozedur, die mann vielleicht auch anderweitig nutzen kann.
Private Sub P_Formel(ByVal Spalte As String, _
ByVal Zeile_von As Integer, _
ByVal Zeile_bis As Integer, _
ByVal Formel As String)
'################################            P_Formel                            '
' Spaltebereiche mit Formel füllen
' Formel        = Formel
' Spalte        = Spalte, die mit der Formel gefüllt wird
' Zeile_von     = von Zeile des Spaltenbereiches
' Zeile_bis     = bis Zeile des Spaltenbereiches
Range(Spalte & Zeile_von).Select
ActiveCell.FormulaR1C1 = Formel                      ' Formel in erste  Zelle
Selection.Copy
Range(Spalte & Zeile_von & ":" & Spalte & Zeile_bis).Select       ' Bereich für copy
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False                                 ' copy Formel
Application.CutCopyMode = False
end Sub
und Aufruf im Makro für die einzelnen Spaltenbereiche ´
Sheets("Kobla_Planung").Select
' Spalte L Zeile 7 bis 50
Call P_Formel("L", "7", "50", _
"=IF(R3C[-1]>Periode,0,VLOOKUP(RC1,'C:\[deine_excel]Gemeinkosten'!R7C2:R351C17,3,0))") _
' Spalte L Zeile 53 bis 54  
Call P_Formel("L", "53", "54", _
"=IF(R3C[-1]>Periode,0,VLOOKUP(RC1,'C:\[deine_excel]Gemeinkosten'!R7C2:R351C17,3,0))")
'Spalte L Zeile  56 60  
Call P_Formel("L", "56 ", "60", _
"=IF(R3C[-1]>Periode,0,VLOOKUP(RC1,'C:\[deine_excel]Gemeinkosten'!R7C2:R351C17,3,0))")
Mit der Variante könnte man in den einzelnen Spaltenbereichen auch unterschiedliche Formeln verwenden.
Vielleicht ist es Dir, wenn nicht hier, doch auf andere Weise von Nutzen.
Gruß Doris

Anzeige
@Doris
07.10.2013 10:31:23
Bernd
Hi liebe Doris,
herzlichen Dank dafür. Das ist wirklich sehr nett von Dir. Ich werde versuchen, es heute oder morgen Abend zu testen (wenn ich rechtzeitig aus dem Büro komme).
herzliche Grüße, Bernd

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige