Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktualisierung Textboxen

Aktualisierung Textboxen
17.11.2006 22:22:27
Markus
Hallo,
ich habe folgendes Excel-Problem:
Es gibt in meiner Excel-Mappe ein Tabellenblatt "Daten" und ein Tabellenblatt mit dem
Namen "Variablen".
Das Tabellenblatt "Daten" ist wie gefolgt aufgebaut:
In der Spalte A KANN ein Variablenname stehen z.B. Text1, Text2 ..... Text50
Steht z. B. in der Zelle A1 der Variablenname Text1 und der User klickt auf die Zelle D1,
so öffnet sich ein Formular "frmAuto" mit zwei Textboxen "txtModell", "txtSonstiges"
und dem Button "cmdHinterlegen".
Hier hat der User die Möglichkeit einen entsprechenden Text einzugeben.
Die Eingabe in beide Textboxen wird in das Tabellenblatt "Variablen" geschrieben.
Da jede Variable eine eigene Zeile hat, würde in diesem Beispiel von Text1, die Eingabe
txtModell in der Zelle B2 stehen und txtSonstiges in Zelle C2.
Problem:
Alle Textinhalte die in beiden Textboxen geschrieben werden, sind korrekt
im Tabellenblatt "Variablen" abspeichert.
Wenn der User nun jedoch seine Eingabe nochmals bearbeiten möchte und im Tabellenblatt
"Daten" erneut auf die Zelle D1 geht, öffnet sich zwar das Formular wieder, aber
die Textboxen sind nicht mit den abgelegten Infos befüllt.
Dies geschieht erst, wenn der User nochmals auf eine andere Zelle geht und anschließend
wieder auf die Zelle D1 zurück geht, dann sind die Textboxen entsprechend befüllt.
Dies wird z. Z. mit folgendem Skripten gemacht:
Skript Tabllenblatt "Daten":

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zelle1 As Range
Dim Zelle2 As Range
If Target.Column > 3 And Selection.Rows.Count < 2 Then
'Text1
If Target.Offset(0, -3) = "Text1" Then
frmAuto.Show
If Not Sheets("Variablen").Range("B2") = "" Or Not Sheets("Variablen").Range("C2") = "" Then
Set Zelle1 = Sheets("Variablen").Range("B2")
Set Zelle2 = Sheets("Variablen").Range("C2")
frmAuto.txtModell = Zelle1
frmAuto.txtSonstiges = Zelle2
End If
End If
'Text2
If Target.Offset(0, -3) = "Text2" Then
frmAuto.Show
If Not Sheets("Variablen").Range("B3") = "" Or Not Sheets("Variablen").Range("C3") = "" Then
Set Zelle1 = Sheets("Variablen").Range("B3")
Set Zelle2 = Sheets("Variablen").Range("C3")
frmAuto.txtModell = Zelle1
frmAuto.txtSonstiges = Zelle2
End If
End If
'Dies ist für alle 50 Textvariablen so hinterlegt!
End If
End Sub

Skript Formular "frmAuto":

Private Sub cmdHinterlegen_Click()
Dim Modell As String
Dim Sonstiges As String
Modell = txtModell
Sonstiges = txtSonstiges
If ActiveCell.Offset(0, -3).Value = "Text1" Then
Sheets("Variablen").Range("B2") = Modell
Sheets("Variablen").Range("C2") = Sonstiges
End If
If ActiveCell.Offset(0, -3).Value = "Text2" Then
Sheets("Variablen").Range("B3") = Modell
Sheets("Variablen").Range("C3") = Sonstiges
End If
'Dies ist für alle 50 Textvariablen so hinterlegt!
End Sub

Bin für jede Hilfe dankbar!!!
Gruß,
Thomas

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

Betreff
Datum
Anwender
Anzeige
AW: Aktualisierung Textboxen
19.11.2006 00:07:14
ingUR
Hallo, Thomas,
das Programm arbeit so, wie es soll, denn mit der Ereignisroutine Private Sub Worksheet_SelectionChange(ByVal Target As Range) wird erst die frmAuto-Form mit den Einträgen gefüllt, wenn ein wirklicher Anwahlwechsel erfolgt ist.
Willst Du nun eine Aktualisierung ohne dass Du die Zelle verläßt (erneutes Anklicken der Zelle ohne von einer anderen Zelle zu kommen, wird nicht als Ereignis signalisiert), so mußt Du entweder den Maustastendruck selbst überwachen oder aber eine Sondertaste dafür nutzen, die Du als Ereignisauslöser nutzt. Sofern die rechte Maustaste nicht für das Aufrufen des Kontextmenüs benötigst, kannst Du auch diese dazu einsetzen.
Gruß,
Uwe
P.S.
Vielleicht möchtest Du einen Hinweis in Deinem Programm umsetzen, der Dir die 50 Code-Blockwiederholung erspart (sofern nicht die Labels eine noch einfachere Methode erlauben, wie etwa r=cint(Mid(ActiveCell.Offset(0, -3).Value,5))+1:
'Daten-Workshett-Prozedur
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r As Long
If Target.Column > 3 And Selection.Rows.Count < 2 Then
Select Case ActiveCell.Offset(0, -3).Value
Case "Text1": r = 2
Case "Text2": r = 3
Case "Text3": r = 4
Case "Text4": r = 5
Case "Text5": r = 6
'usw. ....
Case Else
MsgBox "Fehler in Typenbezeichnung"
Exit Sub
End Select
If Not Sheets("Variablen").Range("B" & r) = "" Or _
Not Sheets("Variablen").Range("C" & r) = "" Then
with frmAuto
.txtModell = Sheets("Variablen").Range("B" & r)
.txtSonstiges = Sheets("Variablen").Range("C" & r)
end with
End If
frmAuto.Show
End If
End Sub
'UserForm-Prozedur
Option Explicit
Private Sub cmdHinterlegen_Click()
Dim r As Long
Dim Modell As String
Dim Sonstiges As String
Modell = txtModell
Sonstiges = txtSonstiges
Select Case ActiveCell.Offset(0, -3).Value
Case "Text1": r = 2
Case "Text2": r = 3
Case "Text3": r = 4
Case "Text4": r = 5
Case "Text5": r = 6
'usw
Case Else
MsgBox "Fehler in Typenbezeichnung"
Exit Sub
End Select
With Sheets("Variablen")
.Range("B" & r) = Modell
.Range("C" & r) = Sonstiges
End With
End Sub

Anzeige
AW: Aktualisierung Textboxen
19.11.2006 12:49:39
ingUR
Hallo, Thomas,
hier die beiden Workssheet-Ereignisse, die Du in Deinem vorgestellten Fall nutzen kannst, um ein wiederholten Aufruf der aktualisierten Eingabebox zu ermöglichen, ohne die Zelle zu verlassen.
Die Prozeduren gehöhren zum VBA-Projektobjekt Tabellenblatt "Daten".
Du hast die Wahl zwischen einer von beiden oder beiden Möglichkeiten. Die Normale Funktion der enstsprechenden Aktion Doppelkclick auf Zelle und/oder rechte-Maustasten-Klick wird für die Zellen der Spalte B nicht weitergeleitet (Cancel=True). Wenn also in den Zellen der Spalte B eintragungen erfolgen müssen, dann wird wohl die Prozedur Worksheet_BeforeRightClick der geeignete Kandidat sein.
Prozedur für Doppelklick auf Zelle in Spalte D
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then
Cancel = True
Worksheet_SelectionChange Target
End If
End Sub
Prozedur für Rechte-Maustaste-Klick auf Zelle in Spalte D
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then
Cancel = True
Worksheet_SelectionChange Target
End If
End Sub
Sofern Dir die Lösungsansätze nicht weiterhelfen, solltest Du die Frage nochmal als offen markieren.
Gruß,
Uwe
Anzeige
AW: Aktualisierung Textboxen
19.11.2006 16:39:28
Thomas
Hallo Uwe,
vielen Dank für deine ausführliche Antwort!
Ich werde es gleich mal testen und Feedback geben!
Gruß,
Thomas
AW: Aktualisierung Textboxen
19.11.2006 21:06:42
Thomas
Hallo Uwe,
ich habe jetzt mal alles getestet.
Leider habe ich immer noch das Problem, wenn ich z. B. in Zelle D1 Daten im Formular eingebe und klicke dann direkt in Zelle D2 wo ich ebenfalls Daten ins Formular eingebe, dass ich zunächst im Formular die Daten der Zelle D1 in den beiden Textboxen stehen habe.
Oder verstehe ich evtl. den Code falsch, den ich wie unten stehend eingefügt?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then
Cancel = True
Worksheet_SelectionChange Target
End If
End Sub


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then
Cancel = True
Worksheet_SelectionChange Target
End If
End Sub

Viele Grüße,
Thomas
Anzeige
AW: Aktualisierung Textboxen
ingUR
Hallo, Thomas,
momentan habe ich das ertstellte Beispiel nicht im Zugriff, so dass ich erst im Laufe des Montags Deine Anmerkungen am Programm nachbollziehen kann.
Jedoch es sei darauf hingewiesen, dass nur im Falle einer Wiederholung des Aufrufes ohne Zellenwechsel die "Sondertasten" zu benutzen sind.
Gruß,
Uwe
AW: Aktualisierung Textboxen
21.11.2006 08:09:26
ingUR
Hallo, Thoma,
nun ist es doch erst Dienstag geworden, bevor ich mich mit Deinen Angaben beschäftigen konnte.
Das von Dir beschreibene Verhalten konnte ich allein mit den Programmteilen, die ich hier vorgestellt habe, nicht nachvollziehen. Nach meinen Tests öffnet sich die frmAuto-Form mit den für die angeklickte Zelle aktuellen Werten (Hochladen der Datei hat eben nicht funktioniert - wird nachgeholt, falls Du nicht bereits die Ursache gefunden haben solltest).
Gruß,
Uwe
Anzeige
AW: Aktualisierung Textboxen
21.11.2006 11:15:52
Thomas
Hallo Uwe,
danke für Deine Antwort!
Wäre super, wenn du mir die Datei mal hochladen bzw. via Mail (1683-65@onlinehome.de) zusenden könntest, damit ich meinen Fehler bei der Aktualisierung finde.
Eine Frage hätte ich noch:
Ist es möglich die Zelle(n) zu sperren, wo ich drauf klicke, damit ich im Formular meine Eingaben machen kann. Es soll so verhindert werden, dass niemand das Formular einfach schließt und anschließend direkt die Zelle beschreibt.
Viele Grüße und schon jetzt vielen Dank!
Thomas
AW: Aktualisierung Textboxen
21.11.2006 11:32:53
Thomas
Hallo Uwe,
danke für Deine Antwort!
Wäre super, wenn du mir die Datei mal hochladen bzw. via Mail (1683-65@onlinehome.de) zusenden könntest, damit ich meinen Fehler bei der Aktualisierung finde.
Eine Frage hätte ich noch:
Ist es möglich die Zelle(n) zu sperren, wo ich drauf klicke, damit ich im Formular meine Eingaben machen kann. Es soll so verhindert werden, dass niemand das Formular einfach schließt und anschließend direkt die Zelle beschreibt.
Viele Grüße und schon jetzt vielen Dank!
Thomas
Anzeige
AW: Aktualisierung Textboxen
21.11.2006 14:02:00
ingUR
Hallo, Thomas,
immer noch nicht gelingt es mir, diese kleine 46kB-Datei auf den Forumsserver hochzuladen, daher habe ich die Datei hier (_Thomas_frmAutoSelectionChange.xls) temporär abgelegt.
Deine Zusatzfrage, «Ist es möglich die Zelle(n) zu sperren, wo ich drauf klicke, damit ich im Formular meine Eingaben machen kann. Es soll so verhindert werden, dass niemand das Formular einfach schließt und anschließend direkt die Zelle beschreibt.», ist mit einem "Ja, mit Einschränkungen" zu beantworten, obwohl ich nicht wssen kann, welche Zellen Du nun meinst (alle oder nur ein bestimmter Bereich auf der einen oder anderen Tabelle) und welchen Sicherheitsstandard Du für diesen Schutz benötigst.
Der Themenkreis wird rund um den Blattschutz sein (siehe Zusatzanweisungen in der Beispielmappe, Protect / Unprotect, Workbook_Open, Hiterlegen), der nur für den Programmzwischenschritt Daten "schreiben" zur Laufzeit aufgehoben wird (in Deiner Prozedur Hinterlegen).
Denkbar wäre aber wohl auch eine allgemeine Ablehnung von Tastatureingaben ausserhalb der Form. Hierbei sollten allerdings Abbruch- und Endemöglichkeiten durch geeignete Schaltflächen im Formular vorhanden sein.
Ferner ist auch das Überwachen in der SelectionChange-Funktion möglich.
Vielleicht ist es geschickt, zu dieser Frage einen neue Beitragskette anzulegen, in der Du dann auch die ergänzenden Anmerkungen, die aus meiner Sicht noch notwendig sind, formulieren kannst. Gleichwohl werde ich, da Deine Frage bisher nur hier gestellt ist und obwohl eine Teilantwort in der oben verlinkten Arbeitsmappe enthalten ist, diesen Beitrag als "Frage noch offen" markieren.
Gruß,
Uwe
Anzeige
AW: Aktualisierung Textboxen
21.11.2006 15:09:51
Thomas
Hallo Uwe,
vielen Dank für die Datei!!!
Denke ich habe meinen Fehler gefunden.
Werde zum Thema Zellschutz ein neues Topic aufmachen!
Nochmals danke für die große Hilfe zu diesem Thema!
Thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige