Ich habe mehrere Spalte von diskontinuierlichen Daten, jede Spalte enthalten einige weiterlesen, die zusammengefasst werden müssen. Also Summierung in verschiedenen Bereichen ist erforderlich. Die Summation wird nur durchgeführt, wenn x größer als 1 ist und sein Wert die Größe des Bereichs definiert (Anzahl der Zeilen, die über der aktiven Zelle ausgewählt werden). "Rng1 = .. address" führte jedoch zu einem anwendungsdefinierten oder objektdefinierten Fehler. Mein Code ist nicht so ordentlich, aber ich bin sicher, dass alle variablen Halte gewünschten Wert, bitte helfen ..Wie Variable interne Variable in Zelle verwenden. Adresse
Sub Dynamic_rowsRangeNumbers()
Dim rng1 As String, rng2 As String
Dim nrow As Integer
Dim x, ncol As Integer
ThisWorkbook.Worksheets("Sheet5").Activate
For ncol = 2 To 4
For nrow = 3 To 28
x = Cells(nrow, 216 + ncol).Value
rng1 = Cells(nrow - x + 1, ncol).Address *** run-time error 1004
rng2 = ActiveCell.Address
'If reference cell has value FZ>=1 Then
If (Cells(nrow, 216 + ncol).Value >= 1) Then
Cells(nrow, 254 + ncol).Formula = "=sum(" & (rng1) & ":" & (rng2) & ")"
End If
Next nrow
Next ncol
End Sub
Was ist der Wert von x, wenn es fehlschlägt? – SJR
Wahrscheinlich nicht mit Ihrem Problem verknüpft, aber 'Dim rng1, rng2 As String' deklariert' rng2' nur als 'string', während' rng1' als 'variant' Typ Variable angesehen wird. Sie sollten 'Dim rng1 als String, rng2 als String' schreiben. –
Mein Bauchgefühl ist, dass Sie Ihre' If (Zellen (nrow, 216 + ncol) .Wert> = 1) Then' Anweisung so verschieben, dass sie direkt nach dem 'For steht nrow = 3 bis 28' Aussage kann Dinge reparieren. Selbst wenn es die Dinge nicht repariert, sollte es wahrscheinlich verschoben werden - keine der drei Zeilen zwischen diesen beiden Anweisungen wird benötigt, außer ** innerhalb des "If" -Blocks. (Aber ich denke, Sie könnten die 'x = ...' Zeile dort belassen und dann 'If x> = 1 Then' haben.) – YowE3K