Zelle per Doppelklick mit Wert füllen + hochzählen

Bild

Betrifft: Zelle per Doppelklick mit Wert füllen + hochzählen
von: Dan Filip
Geschrieben am: 20.08.2015 09:34:29

Hallo Liebes Excel/VBA-Forum:
Ich hab schon einiges mit VBA experimentiert aber hier stoße ich schon wieder an meine Grenzen. :-)
Mein Ziel ist es per Doppelklick in einer beliebigen Zelle in Spalte A "W001.1.1A" einfügen zu können. Gibt es mehrere Einträge sollen die folgenden Zellen immer um die Ziffer vor dem A hochzählen (z.B.: A6 = W001.1.1A; A11 = W001.1.2A; A17 = W001.1.3A; usw.)
W001 und A referenzieren auf den Kopf der Datei (A1 = Wall 001 A)
Erstes .1 referenziert auf das aktive Tabellenblatt (Tabellenblatt1 = W1.1) Tabellenblatt 2 wäre W1.2 .
Zweites .1 referenziert auf die bestehende Position in Spalte A, hier soll hochgezählt werden.
Das ganze benötige ich üblicher Weise für 3 Tabellenblätter.
In Tabellenblatt 2 würde der Inhalt in Spalte A so aussehen: W001.2.1A
Die Ziffer vor dem A soll wieder hochzählen.
Würde mich sehr freuen wenn jemand mir weiterhelfen könnte!
Vielen Dank! LG, Dan

Bild

Betrifft: nachgefragt
von: Matthias
Geschrieben am: 20.08.2015 09:47:18
Hallo Dan,
liegen die Zellen die du anklickst zwingend untereinander bzw. sind diese der Reihenfolge nach geordnet?
lg Matthias

Bild

Betrifft: AW: nachgefragt
von: Matthias
Geschrieben am: 20.08.2015 10:35:42
Hallo Dan,
füg das in den Code des Arbeitsblattes ein:


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngBereich As Range
Dim rngSuchbereich As Range
Dim strInhalt As String
Dim x As Long
Set rngBereich = Range("A:A")
If Not Intersect(Target, rngBereich) Is Nothing Then
x = 1
    Do
        strInhalt = "W001.1." & x & "A"
        Set rngSuchbereich = Range("A:A").Find(What:=strInhalt, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If rngSuchbereich Is Nothing Then Exit Do
        x = x + 1
    Loop
    Target.Value = strInhalt
End If
End Sub
Wenn du den Code in das 2. Arbeitsblatt einfügst einfach "W001.1." & x & "A"
in "W001.2." & x & "A" ändern.
lg Matthias

Bild

Betrifft: nachgefragt
von: Matthias
Geschrieben am: 20.08.2015 09:47:55
Hallo Dan,
liegen die Zellen die du anklickst zwingend untereinander bzw. sind diese der Reihenfolge nach geordnet?
lg Matthias

Bild

Betrifft: AW: nachgefragt
von: Dan
Geschrieben am: 20.08.2015 10:58:13
Hallo Matthias,
danke für die rasche Antwort!
Ja, eher schon. Es wird nach unten also hochgezählt.
LG, Dan

Bild

Betrifft: AW: nachgefragt
von: Matthias
Geschrieben am: 20.08.2015 11:04:45
Ok,
das hat sich allerdings bereits erledigt. In der Praxis war es dann doch einfacher wie in der Theorie^^
Obigen Code interessieren Lücken nicht und wenn du mal eine Zelle löschst, wird der Wert beim nächsten Doppelklick wiederverwendet, damit Zahlenmäßig keine Lücken entstehen können. Selbst die Reihenfolge ist dem Code egal.
lg Matthias

Bild

Betrifft: AW: nachgefragt
von: Dan
Geschrieben am: 20.08.2015 11:10:19
Wie bekomme ich denn das Makro zum Laufen?
Bei mir funktioniert es so jetzt noch nicht...
LG, Dan

Bild

Betrifft: AW: nachgefragt
von: Matthias
Geschrieben am: 20.08.2015 13:22:36
Nicht in ein Modul, sondern direkt in den Code-Bereich der Tabelle einfügen.
VBA-Editor -> Projekt-Explorer -> auf ein Tabellenblatt doppelt klicken.
Der Code wirkt dann immer nur für ein Tabellenblatt, aber du kannst ihn ja in alle relevanten kopieren. Nicht vergessen dabei deine Nummer fürs Tabellenblatt im Code zu ändern ;)
lg Matthias

Bild

Betrifft: AW: nachgefragt
von: Dan
Geschrieben am: 20.08.2015 14:28:28
Sorry es funktioniert leider nicht.
Kannst du dir die angehängten Fotos ansehen?
Tabelle:
Userbild
VBA-Code:
Userbild
vielen Dank!

Bild

Betrifft: AW: nachgefragt
von: Matthias
Geschrieben am: 20.08.2015 15:48:52
Sorry Dan,
abgesehen davon dass ich noch eine kleine Verbesserung am Code vornehmen würde, ist mir an deinem Vorgehen kein Fehler aufgefallen. Ich habe mir extra nochmal genau das Code-Schnipsel, welches im obigen Post steht kopiert und getestet - wenn ich in eine beliebige Zelle in Spalte A doppelklicke, schreibt er den gewünschten Text hinein. Hoffe dass ich dich nicht falsch verstanden habe, aber das war meiner Meinung nach die Aufgabe.
Hast du eventuell "Application.EnableEvents = False" irgendwo in deinem restlichen Code verwendet?
Ansonsten kann ich mir im Moment keinen Reim drauf machen, warum es bei mir geht und bei dir nicht.
Die kleine Verbesserung, statt:

Target.Value = strInhalt

lieber:
If Target.Value = "" Then Target.Value = strInhalt

Damit wird nur in leere Zellen deine Zeichenfolge eingetragen.
lg Matthias

Bild

Betrifft: AW: nachgefragt
von: Dan Filip
Geschrieben am: 21.08.2015 08:52:27
Hallo Matthias,
besten Dank, es klappt wunderbar. Genauso habe ich es mir vorgestellt!
Excel (und ich) hatten wohl einen Neustart nötig. :-)
LG, Dan

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zelle per Doppelklick mit Wert füllen + hochzählen"