Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1440to1444
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

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

Zelle per Doppelklick mit Wert füllen + hochzählen
20.08.2015 09:34:29
Dan
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

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nachgefragt
20.08.2015 09:47:18
Matthias
Hallo Dan,
liegen die Zellen die du anklickst zwingend untereinander bzw. sind diese der Reihenfolge nach geordnet?
lg Matthias

AW: nachgefragt
20.08.2015 10:35:42
Matthias
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

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

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

AW: nachgefragt
20.08.2015 11:04:45
Matthias
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

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

AW: nachgefragt
20.08.2015 13:22:36
Matthias
Nicht in ein Modul, sondern direkt in den Code-Bereich der Tabelle einfügen.
VBA-Editor -&gt Projekt-Explorer -&gt 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

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

Anzeige
AW: nachgefragt
20.08.2015 15:48:52
Matthias
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

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

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige