Hallo zu so später Stunde, ich habe mal wieder ein Problemchen und hoffe auf Eure Hilfe.
In einem benannten Bereich einer Tabelle z.B. "Summenbereich10" ='Auswertung'!$227:$240 möchte ich alle Werte einer Spalte in diesem Bereich aufaddieren. Also so etwas wie Autosumme. Dies soll geschehen wenn auf die nächste Zelle unterhalb des benannten Bereiches dieser Spalte ein Doppelklick erfolgt. Es kann dabei durchaus vorkommen dass nicht alle Zellen in dieser Spalte einen Wert besitzen.
Code im schon vorhandenen VBA-Modul des entsprechenden Tabellenblattes:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Range("Summenbereich10") If Not Application.Intersect(Target, .Resize(1).Offset(.Rows.Count)) Is Nothing Then Cancel = True Target.Value = Application.Sum(.Columns(Target.Column)) End If 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
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Range("Summenbereich10") If Not Application.Intersect(Target, .Resize().Offset(.Rows.Count)) Is Nothing Then Cancel = True Target.Value = Application.Sum(Application.Intersect(.Columns, Target.EntireColumn)) End If 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
06.06.2015, 18:47 (Dieser Beitrag wurde zuletzt bearbeitet: 06.06.2015, 19:06 von sharky51.
Bearbeitungsgrund: Noch ne Idee
)
Super, vielen Dank für die Hilfe!
Genau das habe ich gesucht.
Schon klasse dieses Forum mit all seinen Könnern!!
Eine Frage hätte dazu hätte ich noch: Ich habe ja mehrere Summenbereiche (1-10) und alle sind mit Bereichsnamen versehen. Die Idee ist dies mit Case abzuhandeln...zu sehen in welchem Bereich man sich bewegt.....nur wie kann ich dies aufbauen. D.h. es soll genau so funktionieren wie in Eurem gezeigten Beispiel. Wenn ich einen Doppelklick in der Zelle unterhalb des darüber liegenden Bereiches mache soll diese Spalte im Bereich addiert werden.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Long 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().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
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Long 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().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
Hallo Uwe,
ich meine das mit der Laufvariablen (i) funktioniert so nicht. Wenn ich einen Bereich anklicke der nicht mit "i" übereinstimmt bekomme ich eine Fehlermeldung - "Die Methode Range für das Objekt _Worksheet ist fehlgeschlagen" Diese Fehlermeldung bekomme ich immer wenn ich einen anderen Bereich als den Summenbereich1 anklicke. Deshalb hatte ich ja die Idee mit Case select. Nur weiß ich nicht wie das gehen könnte. Die Prüfung wo ich gerade bin - also unter welchem Bereich ich den Doppelklick mache - fehlt mir dazu.
Select Case "ja wo bin ich denn" ---- hier weiß ich nicht wie ich das definieren soll-----müsste ja wissen welcher Bereich gerade "doppelgeklickt" wird---um dann mit "case" zu verzweigen Case Summenbereich1 . Case Summenbereich2 . Case ......usw . Case Else
End Select
Aber wie ich schon beschrieben habe fehlt mir die Idee