Anzeige
Archiv - Navigation
1832to1836
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

Zellinhalt vor Verlassen in Variable

Zellinhalt vor Verlassen in Variable
18.06.2021 08:53:56
MRUTOR
Hallo zusammen,
Sorry, aber ich stehe gerade irgendwie auf dem Schlauch.
Frage: ist es moeglich, die Eingabe in einer Zelle an eine Variable zu uebergeben, bevor die Zelle mit klick oder Enter verlassen wird? Also praktisch die Eingabe mitlesen und direkt in die Variable schreiben.
Hintergrund ist, dass ich nach dem Verlassen den Inhalt bearbeiten will. Das geht aber dann nicht mehr mit ActiveCell, da diese ja nicht mehr die aktive ist. Das ganze soll in einem Modul geschehen, also nicht mit Target im Tabellenblatt Code.
Vielen Dank schon mal fuer eure Hilfe.
Gruss Tor

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Welche Zelle oder Zellen? (owT)
18.06.2021 09:10:44
EtoPHG

AW: Zellinhalt vor Verlassen in Variable
18.06.2021 09:16:56
Oberschlumpf
Hi
mit VBA = Gut solltest du das aber wirklich selbst hinbekommen...hmm....ok ok, nehm ich zurück....ich selbst bin auch gut in VBA, kann trotzdem nich alles^^
Warum willst du auf Target verzichten?
Bei Anklicken deiner "Wunschzelle" (genau! WELCHE denn?) überprüfst du in Worksheet_SelectionChange zuerst, ob die "Wunschzelle" ausgewählt wurde - wenn ja - dann Inhalt (und Adresse) von "Wunschzelle" einer Variablen zuweisen - fertig
Adresse brauhcst du eigtl nich, da du deine "Wunschzelle" ja kennst.
Hilfts?
Ciao
Thorsten
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 12:08:14
MRUTOR
Hallo Thorsten,
danke fuer deine Antwort und sorry, dass ich mich so spaet wieder melde.
Ich habe jetzt alles soweit hinbekommen, wie ich es will. Mit einer Ausnahme. Und zwar geht es hier um Telefonnummern, die in Spalte M eingetragen werden und bearbeitet werden sollen. Es gibt verschiedene Moeglichkeiten. Aber das ist Nebensache. Mein Problem hier ist nun: Ich kopiere eine Nummer mit internationaler Vorwahl mit Strg+C z.B. aus einem Word Doc und beim Einfuegen mit Strg+V in die Excel Zelle geht mir immer das + verloren und die Zelle wird auf Format Standard gesetzt. Somit kann ich meine Bearbeitung mit Case "+" vergessen, da das "+" nicht mehr da ist. Hier soll naemlich eigentlich das + durch 2 Nullen ersetzt werden.
Hier mein Code dazu:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("M:M")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Target  "" Then
Target.NumberFormat = "@"
S = Target
Tel_Aendern (S)
Application.EnableEvents = False
Target = Speicher
Application.EnableEvents = True
End If
End If
End Sub
und

Sub Tel_Aendern(cbtext As String)
Speicher = cbtext
Select Case Left(Speicher, 1)
Case "0": Speicher = Speicher                   'wenn eine Null am Anfang, dann lassen
Case "+": Speicher = "00" & Mid(Speicher, 2)    'wenn + am Anfang, dann durch 2 Nullen ersetzen
Case Else: Speicher = "0" & Speicher            'wenn Null der Vorwahl vergessen, dann Null ergaenzen
End Select
End Sub
Ich hoffe, jemand kann mir helfen, damit beim Kopieren das + nicht mehr verloren geht.
Uebrigens wird bei jedem Selection_Change die Spalte M als Text formatiert. Ich hatte gehofft, dass das + dadurch erhalten bleibt. Aber leider nein.
Gruss Tor
Anzeige
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 12:09:54
MRUTOR
Ach ja noch vergessen, bei manueller Eingabe der Nummer mit +4921214547 als Beispiel, funktioniert alles.
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 12:19:52
Oberschlumpf
Hi,
kannst du bitte per Upload eine Bsü-Datei zeigen, die all das enthält, um dein Problem in der Bsp-Datei nachvollziehen und vllt auch lösen zu können?
Ciao
Thorsten
...wenn du nun wieder so lange mit einer Antwort wartest, kann es sein, dass dein Beitrag im Archiv verschwindet...nur mal so als Tipp^^ ;-)
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 12:55:23
MRUTOR
Hi Thorsten,
klar, hier die Datei. Wie du im Code sehen kannst geht es um Spalte M bei der Telefonnummer.
Also wie gesagt, manuell klappt es mit dem +. Es wird durch 2 Nullen ersetzt, aber beim einkopieren von z.B. einem Worddoc klappt es nicht. Es wird zwar nicht mehr auf Standard gesetzt, aber nur eine Null eingefuegt, weil Case Else benutzt wird. Das + ist ja verschwunden beim Einfuegen.
Gruss Tor
https://www.herber.de/bbs/user/146691.xlsm
Anzeige
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 13:43:59
Oberschlumpf
Hi,
ich habe in Word die TelNr +4940600051234 kopiert und in Excel eingefügt
Bild 1
Userbild
Bild 2
Userbild
Wie du siehst, funktioniert die 1. Methode (manuell, aber das weißt du ja schon), aber es funktioniert auch die 3. Methode.
Die Bilder zeig ich deswegen, weil ich manches mit Bildern besser erklären kann als nur mit Wörtern.
Ich nutze Office 2016. Ich weiß nicht, ob in O365 auch die 2 Möglichkeiten über Einfügen mit rechter Maustaste angeboten werden.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 13:50:26
MRUTOR
Hallo Thorsten,
Ja das hilft. Allerdings nur mir. Die Benutzer der Datei sind eher weniger bewandert mit Excel und sind gewoehnt, Strg+V zum Einfuegen zu benutzen. Wird sich als schwer erweisen, denen dauerhaft beizubringen, die rechte Maustaste und das rechte Symbol zu benutzen. Aber mal sehen. Es scheint ja keine andere Loesung zu geben?
Vielen Dank dir und ne schoene Woche.
Gruss Tor
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 13:58:16
Der
Wenn ich die Spalte M vorher als TEXT formatiere, dann funktionert es bei mir auch mit Strg+V.
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 14:01:01
MRUTOR
Bei mir nicht. Deshalb das Problem. Dann wird immer Case Else benutzt und nur eine statt zwei Nullen vorangestellt.
Anzeige
AW: Zellinhalt vor Verlassen in Variable
21.06.2021 14:48:32
Der
Eine andere Möglichkeit wäre das Auslesen der Zwischenablage:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("M:M")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Target  "" Then
Dim oData As Object
Set oData = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
On Error Resume Next
oData.GetFromClipboard
S = oData.GetText
On Error GoTo 0
Target.NumberFormat = "@"
Application.EnableEvents = False
Target = Tel_Aendern(S)
Application.EnableEvents = True
End If
End If
End Sub

Function Tel_Aendern(ByVal cbtext As String) As String
Speicher = cbtext
Select Case Left(Speicher, 1)
Case "0": Speicher = Speicher 'wenn eine Null am Anfang, dann lassen
Case "+": Speicher = "00" & Mid(Speicher, 2) 'wenn + am Anfang, dann durch 2 Nullen ersetzen
Case Else: Speicher = "0" & Speicher 'wenn Null der Vorwahl vergessen, dann Null ergaenzen
End Select
Tel_Aendern = Speicher
End Function
Ich habe die Umwandlung in eine Function geändert, damit man den Wert der Umwandlung direkt zuordnen kann. Die globale Variable Speicher ist nun nicht mehr notwendig.
Anzeige
AW: Zellinhalt vor Verlassen in Variable
18.06.2021 10:39:15
Der
Hallo,
während der Eingabe kannst Du die Werte der Zelle nicht auslesen, da es im Worksheet kein entsprechendes Ereignis (z. B. "KeyUp") gibt.
Aber im Ereignis "Worksheet_Change" hast Du den Bezug (Target) und kannst den Wert der Zelle auslesen und ggf. bearbeitet wieder da rein schreiben.
Viele Grüße
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige