Registriert seit: 13.04.2014
Version(en): 365
Hallo Uwe,
ich glaube nicht, dass das funktioniert, da die Formel als Matrixformel eingegeben werden muß, was mit VBA nicht so einfach ist. Hier mal ein Link zum Thema:
http://www.office-loesung.de/ftopic311812_0_0_asc.php
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Schu,
so sollten Deine Wünsche erfüllt werden: :)
Code:
Sub FormelnErsetzen()
Dim oWs As Worksheet
Dim rngZelle As Range
Dim strBezug(1 To 2) As String
On Error Resume Next
For Each oWs In ActiveWorkbook.Worksheets
For Each rngZelle In oWs.Columns(9).SpecialCells(xlCellTypeFormulas)
If rngZelle.Offset(, -1).Value = "Arbeitsstunden nichtWT:" Then
strBezug(1) = rngZelle.DirectPrecedents.Areas(1).Address(0, 0)
strBezug(2) = rngZelle.DirectPrecedents.Areas(2).Address(0, 0)
rngZelle.Formula = "=SUMPRODUCT((" & strBezug(1) & "=TRANSPOSE('arbeitsfreie Tage 2011-2013'!$A$1:$A$59))*(MOD(" & strBezug(1) & ",7)>1)*(" & strBezug(2) & "))+SUMPRODUCT((MOD(" & strBezug(1) & ",7)<2)*(" & strBezug(2) & "))"
End If
Next rngZelle
Next oWs
End Sub
Gruß Uwe
Registriert seit: 13.04.2014
Version(en): 365
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Edgar,
danke für den Hinweis. Das hatte ich glatt übersehen.
So sollte es dann mit Matrixformeln klappen:
Code:
Sub FormelnErsetzen()
Dim oWs As Worksheet
Dim rngZelle As Range
Dim strBezug(1 To 2) As String
On Error Resume Next
For Each oWs In ActiveWorkbook.Worksheets
For Each rngZelle In oWs.Columns(9).SpecialCells(xlCellTypeFormulas)
If rngZelle.Offset(, -1).Value = "Arbeitsstunden nichtWT:" Then
strBezug(1) = rngZelle.DirectPrecedents.Areas(1).Address(0, 0)
strBezug(2) = rngZelle.DirectPrecedents.Areas(2).Address(0, 0)
rngZelle.FormulaArray = "=SUMPRODUCT((" & strBezug(1) & "=TRANSPOSE('arbeitsfreie Tage 2011-2013'!$A$1:$A$59))*(MOD(" & strBezug(1) & ",7)>1)*(" & strBezug(2) & "))+SUMPRODUCT((MOD(" & strBezug(1) & ",7)<2)*(" & strBezug(2) & "))"
End If
Next rngZelle
Next oWs
End Sub
Gruß Uwe
Registriert seit: 05.05.2014
Ein Traum!!
Vielen Dank Euch allen für die rege Teilnahme! Es funktioniert alles bestens!!!
Ihr seid ein gutes Team!!
:18: