Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code

VBA Code
30.07.2014 20:05:39
Jürgen
Hallo, ich habe mich im Netz jetzt gut umgesehen und habe auch schon etwas zusammen getragen was auch funktioniert.Der Grundgedanke ist das ich in einer Zelle wo schon eine Zahl darin steht eine weitere dazu zählen kann und das Ergebnis in der Zelle angezeigt wird.Das klappt auch.Der zweite Schritt war dann das das Makro startet wenn ich die Zelle anklicke. Das klappt auch, aber mit meinem Code im Moment nur in der Zelle B11. Meine Frage: Wie Bewerkstellige ich es das das Makro über die Zellbereiche B11 - G23 ausgeführt wird.
Hier mein Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$11" Then Call Tabelle1.AddierenFeld
End Sub

Sub AddierenFeld()
Dim Text As String, Text2 As String, Neu As Double, FehlerWahl As Integer
On Error GoTo Fehler
Text = "dieser Wert wird zum " & vbCrLf
Text = Text & "aktuellen Zellwert addiert "
Neu = InputBox(Text, "Addition")
If Val(Neu) 0 Then ' nur addierten wenn Wert eine Zahl ist
ActiveCell.Value = ActiveCell.Value + Neu
End If
Exit Sub
Fehler:
Text2 = "Sie haben keine Zahl eingegeben," & vbCrLf
Text2 = Text2 & "wollen Sie die Eingabe wiederholen?"
FehlerWahl = MsgBox(Text2, vbYesNo)
Select Case FehlerWahl
Case vbYes
Resume
Case Else
Exit Sub
End Select
End Sub
Ich würde mich sehr über eure Hilfe freuen.
Gruß
Jürgen

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code
30.07.2014 20:17:01
Martin
Hallo Jürgen,
mein Vorschlag:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B11:G23")) Is Nothing Then
Call Tabelle1.AddierenFeld
End If
End Sub
Viele Grüße
Martin

AW: VBA Code
30.07.2014 20:47:51
Matze
Hallo Jürgen, Hallo Martin,
der Vorschlag von Martin wird dir sicherlich geholfen haben, ich selber mag dieses "selection" Ereignis nicht unbedingt und nutze meist dafür den "double_click"
Weder bei selection noch double_click wird eine nochmalige Eingabe der selben Zelle nicht möglich sein,
da man erst die Zelle verlassen muss um das Ereignis erneut darauf anzusprechen.
Das war zwar keine gestellte Aufgabe aber mit erlaub ein Tipp:
Ich springe einfach eine Zelle unter die gerade "active" Zelle, hier mit Double_click
Im Sinne von Martin :-)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B11:G23")) Is Nothing Then
Call Tabelle1.AddierenFeld
Application.EnableEvents = False
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
Application.EnableEvents = True
End If
End Sub
Gruß Matze

Anzeige
AW: VBA Code
30.07.2014 21:14:26
Jürgen
Hallo Leute,
danke für die schnelle und vor allem guten Antworten.
Antwort 1 von Martin war ja genau das was ich wollte.
Antwort 2 von Matze ist natürlich auch gut ( vor allem das Doppelclick ist super ) hat aber den Nachteil das ich den Wert durch das Einfache anklicken der Zelle ohne Makro manuell ändern kann.
Das heißt: In der Zelle steht die Zahl 5 - ich klicke die Zelle einfach an - gebe 8 ein und es wird 8 angezeigt.Den Wert der Zelle darf man nur mit dem Makro ändern können.
Gruß
Jürgen

AW: VBA Code
31.07.2014 13:16:02
Matze
Hallo Jürgen,
wenn du den Doppelklick verwenden möchtest , müsste wie du schon bemerkt hast die direkte Eingabe
der Zellen vermieden werden.
Das könnte mit dem Blattschutz erledigt werden, was aber eventuelle Andere Eingaben aber wieder behindern könnte, ich kenne ja deine Mappe nicht oder das was du vorhast.
Eine weitere Lösung mit Application.Undo arbeiten um eine gemachte Eingabe zurück zusetzten.
Die Prüfung im Selection_Change Ereignis muss daher auf False gesetzt werden.
hier mal die Zeilen dazu:
Option Explicit
Dim Check As Boolean 'Prüfung
Sub AddierenFeld()
Dim Text As String, Text2 As String, Neu As Double, FehlerWahl As Integer
On Error GoTo Fehler
Text = "dieser Wert wird zum " & vbCrLf
Text = Text & "aktuellen Zellwert addiert "
Neu = InputBox(Text, "Addition")
If Val(Neu)  0 Then ' nur addierten wenn Wert eine Zahl ist
ActiveCell.Value = ActiveCell.Value + Neu
End If
Exit Sub
Fehler:
Text2 = "Sie haben keine Zahl eingegeben," & vbCrLf
Text2 = Text2 & "wollen Sie die Eingabe wiederholen?"
FehlerWahl = MsgBox(Text2, vbYesNo)
Select Case FehlerWahl
Case vbYes
Resume
Case Else
Exit Sub
End Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B11:G23")) Is Nothing Then
If Not Check Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Check = True
If Not Intersect(Target, Range("B11:G23")) Is Nothing Then
Call Tabelle1.AddierenFeld
Application.EnableEvents = False
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Check = False
End Sub
Gruß Matze

Anzeige
AW: VBA Code
31.07.2014 16:42:41
Jürgen
Hallo Matze, du bist genial. Das ist die optimale Lösung. Danke und nochmal Danke.
Eine Frage habe ich aber jetzt doch noch, so etwas kommt mir immer wenn ich ins Bett gehe.
- Wäre es zu Bewerkstelligen das ich genauso, wie ich im Moment eine Zahl dazu zählen kann auch eine abziehen kann? Muss jetzt nicht sein, diese Lösung ist reicht mir,das andere wäre eine Nützliche Erweiterung.
Danke nochmals für das was du bis jetzt für mich getan hast.
Gruß
Jürgen

AW: VBA Code
31.07.2014 21:07:42
Matze
Hallo Jürgen,
du bist mir ja einer, schon mal eine negative Zahl in deine Inputbox eingegeben?
Die Zahlen im angegebenen Bereich bekommst du nur noch auf 0 wenn du genau den Gegenwert in die Box eingibst, somit sollte die Frage mit minus rechnen doch erledigt sein.
Gruß Matze

Anzeige
AW: VBA Code
01.08.2014 15:03:30
Jürgen
Hallo Matze,
das hatte ich noch gar nicht ausprobiert. Ich war so glücklich über das andere, das ich mir da echt keine Gedanken gemacht habe, um so mehr bin ich jetzt total zufrieden.
Noch einmal vielen Dank.
Grüße aus Bechenheim
Jürgen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige