ich dachte, Du würdest selbst darauf kommen, die 10 in der Zeile
For i = 1 To 10
an Deine Gegebenheiten anzupassen. Uns verrätst Du die ja nicht. Du weißt doch, wie viele Bereiche es sind. Alternativ kannst Du auch darüber eine Zeile einfügen mit
On Error Resume Next
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • sharky51
Also es sind 10 Summenbereiche 1-10, die auch so benannt sind. In dem Arbeitsbeispiel sind nicht alle Summenbereiche benannt und somit läuft die For-Schleife gegen die Wand wenn ein Summenbereich erwartet wird den es gar nicht gibt.
Dank Deinem Hinweis hat es jetzt auch bei mir Klick gemacht, danke! Damit ist die Idee mit "Case" gestorben.
muss noch mal nachfragen, da es bei mir nicht so funktioniert, wie ich es vermutet habe.
Ich kann unterhalb der definierten Bereiche mehrere Zeilen weiter nach unten, durch Doppelklick summieren. Außerhalb der definierten Bereiche führt der Doppelklick zu einem Laufzeitfehler.
das ist mir gar nicht aufgefallen, dass in Deiner ersten Beispielmappe die 1 bei Resize() fehlte. Ich übernahm es einfach nach der Korrektur aus Deiner Mappe. Die 1 bewirkt, dass der Doppelklickbereich nur eine Zeile groß ist.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Long On Error Resume Next For i = 1 To 10 With Range("Summenbereich" & i) 'für z.B. "Summenbereich1" 'oder 'With Range("Summenbereich" & Format(i, "00")) 'für z.B. "Summenbereich01" If Not Application.Intersect(Target, .Resize(1).Offset(.Rows.Count)) Is Nothing Then Cancel = True Target.Value = Application.Sum(Application.Intersect(.Columns, Target.EntireColumn)) Exit For End If End With Next i End Sub
Also es sind 10 Summenbereiche 1-10, die auch so benannt sind. In dem Arbeitsbeispiel sind nicht alle Summenbereiche benannt und somit läuft die For-Schleife gegen die Wand wenn ein Summenbereich erwartet wird den es gar nicht gibt.
Dank Deinem Hinweis hat es jetzt auch bei mir Klick gemacht, danke! Damit ist die Idee mit "Case" gestorben.
Vielen Dank nochmals...auch für die Geduld.
Hallo Uwe,
mir ist da noch eine Frage eingefallen zu dem Thema benannte Bereiche eingefallen.
Wie finde ich per VBA heraus wo die Grenzen eines benannten Bereiches sind? Damit meine ich in welcher Zeile/Spalte beginnt bzw. endet der Bereich?
Sub aaa() With Range("Summenbereich1") MsgBox "Der Bereich """ & .Name.Name & """ beginnt in Zeile " & .Row & " und Spalte " & .Column & vbNewLine & _ " und endet in Zeile " & .Row + .Rows.Count - 1 & " und Spalte " & .Column + .Columns.Count - 1 & ".", vbInformation End With End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • sharky51
Sub aaa() With Range("Summenbereich1") MsgBox "Der Bereich """ & .Name.Name & """ beginnt in Zeile " & .Row & " und Spalte " & .Column & vbNewLine & _ " und endet in Zeile " & .Row + .Rows.Count - 1 & " und Spalte " & .Column + .Columns.Count - 1 & ".", vbInformation End With End Sub