VBA Wenn Werte vorhanden formel ziehen

Excelmania

Lieutenant
Registriert
Apr. 2010
Beiträge
825
Mahlzeit.

mit folgenden Makro möchte ich das erst geprüft wird ob in einem bestimmten Bereich Werte vorhanden sind. Ist dies der Fall soll ein Wert gesetzt werden und eine Formel gezogen werden. Leider klappt es jedoch nicht.

Code:
Sub berechnenkopieren()
    ' Tabellenblatt Soll-AT
    Dim BereichSAT As Range
    Dim AnzahlSAT As Long
    ST1 = Sheets("Parameter").Range("B24")
    ST2 = Sheets("Parameter").Range("B26")
    ST3 = Sheets("Parameter").Range("B25")
    ST4 = Sheets("Parameter").Range("B27")
    Set BereichSAT = Sheets("Soll-AT").Range(ST1 & ST2 & ":" & ST3 & ST4)
    AnzahlSAT = Application.CountA(BereichSAT)
    If AnzahlSAT > 0 Then
        Dim a As Long
        a = Sheets("Soll-AT").UsedRange.SpecialCells(xlCellTypeLastCell).Row
        Sheets("Parameter").Range("B19").Value = a
        S1 = Sheets("Parameter").Range("B6").Value
        S2 = Sheets("Parameter").Range("B7").Value
        c = Sheets("Parameter").Range("B18").Value
        a = Sheets("Soll-AT").UsedRange.SpecialCells(xlCellTypeLastCell).Row
        Sheets("Soll-AT").Range(S1 & a & ":" & S2 & c).FillDown
    Else
    MsgBox ("Fehler! Importdaten auf dem Tabellenblatt Soll-AT fehlen.")
    End If
End Sub
 
Ich denke es könnte helfen wenn du eine Spur konkreter wirst. Was für ein Fehler kommt denn? Oder verhält sich das Programm nur falsch? Im übrigen bei den Änderungen die MS an VBA durchführt wäre auch die Excelversion wichtig, nur für den Fall dass sich irgendwer das antun will das auszuprobieren.

Jedenfalls siehts für mich doch so aus als würdest du gern in dem Parameter Sheet den Bereich definieren den du dann abfragst indem du zB in B24 "A" schreibst und in B26 "1" und dann deinen Check bei "A1" startest. Auch wenn mir vollkommen unklar ist wieso du da 4 Zellen dafür brauchst und nicht einfach in die erste alles reinschreibst also "A1:B56" oder so würd ich generell behaupten dass du da genauso wie weiter unten .Value brauchst weil du einen Range nicht als String verwenden kannst?
 
Zurück
Oben