Excel 2013 Spaltensumme in einem benannten Bereich
#11
Hallo Erich,

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:
  • sharky51
Top
#12
Hallo Uwe,

ich denke jetzt hab ich meinen Fehler gefunden.

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.
Top
#13
Hallo Uwe,


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.

Liegt es an mir?

Grüße
Veltepetter


Angehängte Dateien
.xlsm   SUMMENBEREICH10_1.xlsm (Größe: 17,65 KB / Downloads: 4)
Top
#14
Hallo Frank,

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

Gruß Uwe
Top
#15
Hallo,

jetzt funktioniert es schon besser. Wink

Allerdings kann man nun in keiner anderen Zelle,
außer denen unter den definierten Bereichen,
einen Doppelklick ausführen.

Grüße
Veltepetter

P.S. Das hattest aber auch geschrieben, fällt mir im Nachhinein auf.
Top
#16
(07.06.2015, 11:56)sharky51 schrieb: Hallo Uwe,

ich denke jetzt hab ich meinen Fehler gefunden.

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?

Kannst Du mir da einen Tipp geben?
Top
#17
Hallo Erich,

z.B.:

Code:
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:
  • sharky51
Top
#18
(15.06.2015, 15:29)Kuwer schrieb: Hallo Erich,

z.B.:



Code:
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
 
Super Uwe,

genau das benötige ich.

Herzlichen Dank!!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste