Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Anzeige und bearbeiten der aktiven Zelle mit Userform durch Doppelklick
#1
Hallo zusammen,
folgende Herausforderung (für erfahrene VBA Fachleute vermutlich recht einfach):

Ich möchte durch Doppelklick in die aktive Zelle das sich eine Userform öffnet, der Text aus der Zelle in der Userform angezeigt wird.
Ausserdem sollte der Text bearbeitbar sein, also Ändern usw.
Nach Bearbeitung soll der aktuelle Text in der Userform wieder in die aktive Zelle zurückgeschrieben werden.

Ich gehe mal davon aus das "Userform" die beste Möglichkeit ist, bin aber natürlich auch für andere Anregungen dankbar.

Ist die Frage ausreichend beschrieben?

Vielen Dank
Gruß .. Dirk
Antworten Top
#2
Hallo Dirk!
Ein, sagen wir mal, ungewöhnlicher Wunsch.
Warum die Zellenbearbeitung nicht gleich in der Tabelle?

Sei es drum, hier braucht es kein Userform, Code kommt ins Modul der Tabelle:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim NeuerWert
NeuerWert = Application.InputBox("Dann ändere mal!", "Quatsch", Target)
If Not NeuerWert = False Then Target = NeuerWert
Cancel = True
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Hi Ralf,
danke für die super schnelle Antwort. Schon klar das der Wunsch ein wenig "komisch" ist.

Hintergrund ist eigentlich das ich einem Benutzer ermöglichen möchte längere Texte innerhalb einer Zelle (die jeweils aktive Zelle)
sowohl "besser" zu lesen als auch diesen Text "einfacher" zu verändern.

Dachte mir, da der Text doch länger sein kann und das in einer Zelle dann doch mal schlecht zu lesen ist, das ganze in einem "neuem" Fernster zu zeigen (daher die Userform), entweder durch Doppelklick auf die Zelle oder aber durch nen Command Button der dann ein Macro aufruft.

Dann sollte eben der Text aus der aktiven Zelle in der sich der Benutzer gerade befindet angezeigt werden und auch veränderbar sein.

Habe eben mal deinen Vorschlag ausprobiert, aber mache da wohl irgendwas falsch. Klappt nicht so wirklich.
Und ich glaube mit der Inputbox wird das wohl nicht ausreichen, oder kann man Text auch mehrzeilig darstellen?

Also, unter dem Strich geht es um die Benutzerfreundlichkeit bei lesen und Eingabe von Text In- und aus der aktiven Zelle.

Vielen Dank und Gruß
Dirk
Antworten Top
#4
Aha!  :19:
Dann macht das Userform Sinn.
Ich habe fpolgende Eigenschaften der Textbox geändert:
- Font: Schriftgröße
- Multiline: True
- Scrollbars: 2 (vertikal)

Code im Tabellenmodul:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
UserForm1.Show
Cancel = True
End Sub

Code im UserForm:
Code:
Private Sub UserForm_Initialize()
TextBox1 = ActiveCell
End Sub

Private Sub CommandButton1_Click()
ActiveCell = TextBox1
Unload Me
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Datei im Anhang.

Gruß Ralf


Angehängte Dateien
.xlsm   TextboxGross.xlsm (Größe: 15,65 KB / Downloads: 38)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Gigbert62
Antworten Top
#5
Thumbs Up 
Hi Ralf,
genial ... Genau so dachte ich mir das.

Nochmals vielen Dank für die prompte Hilfe ....

Viele Grüße

Dirk
Antworten Top
#6
Hallo zusammen,

ich würde das Anzeigen der userform auf Zellen mit Text bzw ohne Zahlen beschränken.
Denn sonst müsste man beim zurückschreiben Prüfungen einbauen.

Dann könnte auch mit ControlSource der Textbox gearbeitet werden.

Der Code hinter der Tabelle würde so aussehen:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not IsNumeric(ActiveCell) Then
 UserForm1.Show
 Cancel = True
End If
End Sub

Die userform würde ich auf zwei Arten ohne Schaltflächen schließen.
Einmal so, wie ich sie auch geöffnet habe, mit einem Doppelklick in die Textbox und zum
Zweiten nach Nutzung der Enter-oder Tab-Taste.

Dazu muss folgender Code hinter die Tabelle


Code:
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Unload Me
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 9 Then Unload Me 'diese Zeile wurde nachträglich korrigiert; Enter macht keinen Sinn, da sonst kein Zeilenumbruch möglich
End Sub

Private Sub UserForm_Initialize()
  TextBox1.ControlSource = ActiveCell.Address
End Sub


Damit es nicht untergeht, auf jeden Fall muss man wissen, dass Zahlen besonders behandelt werden müssen.
Gruß Atilla
Antworten Top
#7
Hi Attila,
danke für den Hinweis, werde das auch mal ausprobieren.

Noch kurz eine weitere Frage .. auch an den Ralf vielleicht:

Würde gern noch 2 weitere Textboxen einbauen in denen mir der Inhalt der der beiden Zellen links von der aktiven Zelle angezeigt wird.
Abzeige reicht, da muss nicht geänder oder zurückgeschrieben werden.

Habe da auch schon ein bischen rumprobiert aber funzt nicht wirklich.

Vielleicht könnt Ihr mir da auch noch kurz Hilfestellung geben.

Vielen Dank und Gruß
Dirk
Antworten Top
#8
Hallo,

ein Versatz geht z.B. mit Offset()

Tetxbox2 = ActiveCell.Offset(0, -2).Value  'bedeutet die aktive Zelle zwei Spalten nach links versetzen
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Gigbert62
Antworten Top
#9
.. und klappt natürlich Smile ....

Man lernt dazu, prima .. und herzlichen Dank für die wirklich schnelle Hilfe ..

Gruß
Dirk
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste