AW: Makro/VBA-Lösung
17.01.2018 12:31:16
fcs
Hallo Philip,
hier eine Makro-Lösung
Die werden im "Tabelle2" neu berechnet, wenn das Blatt aktiviert wird.
Das Makro fügt Formeln ein, die nach Neuberechnung durch ihre Werte ersetzt werden.
Gruß
Franz
'Code unter dem Code-Modul von Blatt "Tabelle2"
Private Sub Worksheet_Activate()
'Anzahl Proben aktualisieren
Call ProbenZahl_aktualisieren(Me, Worksheets("Probenahme"))
End Sub
Private Sub Test_ProbenZahl_aktualisieren()
Call ProbenZahl_aktualisieren(Me, Worksheets("Probenahme"))
End Sub
Sub ProbenZahl_aktualisieren(wksMG As Worksheet, wksPN As Worksheet)
Dim ZeilePN1 As Long, ZeilePNL As Long
Dim ZeileMG As Long, ZeileMG1 As Long, ZeileMGL As Long, SpalteMG As Long
Dim strFormel As String
Dim StatusCalc As Long
With wksPN
ZeilePN1 = 4
ZeilePNL = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With wksMG
ZeileMG1 = 4
ZeileMGL = .Cells(.Rows.Count, 1).End(xlUp).Row
strFormel = "=SUMPRODUCT((RC1='" & wksPN.Name & "'!R" & ZeilePN1 & "C6:R" _
& ZeilePNL & "C6)*(RC1"""")*(TEXT('" & wksPN.Name _
& "'!R" & ZeilePN1 & "C2:R" & ZeilePNL & "C2,""MMMM"")=R2C)*1)"
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
For SpalteMG = 6 To 28 Step 2 'Monat Januar bis Dezember
With .Range(.Cells(ZeileMG1, SpalteMG), .Cells(ZeileMGL, SpalteMG))
.FormulaR1C1 = strFormel
End With
Next
.Calculate
For SpalteMG = 6 To 28 Step 2 'Monat Januar bis Dezember
With .Range(.Cells(ZeileMG1, SpalteMG), .Cells(ZeileMGL, SpalteMG))
.Value = .Value
End With
Next
For ZeileMG = ZeileMG1 To ZeileMGL
If .Cells(ZeileMG, 1) = "" Then
.Rows(ZeileMG).ClearContents
End If
Next
With Application
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End With
End Sub