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

TextBox

TextBox
28.05.2008 10:42:00
Ernst
Hallo !.....VBA Profis
ich verwende folgende TextBox und möchte gerne den gesuchten Eintrag ( Zelle) in Farbe dargestellt haben wie müsste der Code geändert werden ? Das Blatt ist mit einem Blattschutz versehen. Bei Verlassen der Zelle sollte wieder die Ursprungsfarbe erscheinen........

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
b = TextBox1.Value
c = Len(b)
x = y
If KeyCode = 13 Then
If c > 1 Then
On Error GoTo ende
Cells.Find(What:=b, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
'Range("P104").Value = b
'TextBox1.Value = ""
Exit Sub
ende:
'TextBox1.Value = ""
MsgBox "Wagen Nr. nicht vorhanden !!"
End If
End If
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: TextBox
28.05.2008 13:57:45
fcs
Hallo Ernst,
das ist nicht ganz einfach.
1. Du muss in einem allgemeinen Modul einige Variablen als Pubblic deklarieren
2. Du muss im Modul "DieseArbeitsmappe" eine Workbook_BeforeClose-Ereignisprozedur einfügen
3. Du muss den Code für das Tabellenblatt-Modul anpassen und
eine Worksheet_SelectionChange- und eine Worksheet_Deactivate Prozedur ergänzen
Schaut dann etwa wie folgt aus.
Gruß
Franz

'### Allgemeines Modul
'Variablendeklarationen
Public oldFarbe As Long
Public LastAuswahl As Range
'### Modul - DieseArbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not LastAuswahl Is Nothing Then
LastAuswahl.Interior.ColorIndex = oldFarbe
Set LastAuswahl = Nothing
ThisWorkbook.Save
End If
End Sub
'##Tabelenblatt-Modul
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim b As Variant, c As Integer, objZelle As Range
b = TextBox1.Value
c = Len(b)
'x = y ist wohl überflüssig
If KeyCode = 13 Then
If c > 1 Then
On Error GoTo ende
Set objZelle = Cells.Find(What:=b, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
If objZelle Is Nothing Then
MsgBox "Wagen Nr. nicht vorhanden !!"
Else
Application.EnableEvents = False
objZelle.Activate
Set LastAuswahl = objZelle                'Zelle merken
oldFarbe = objZelle.Interior.ColorIndex   'Farbe Merken
objZelle.Interior.ColorIndex = 6 'gelb
Application.EnableEvents = True
'Range("P104").Value = b
'     TextBox1.Value = ""
End If
Exit Sub
ende:
'TextBox1.Value = ""
End If
End If
End Sub
Private Sub Worksheet_Deactivate()
If Not LastAuswahl Is Nothing Then
LastAuswahl.Interior.ColorIndex = oldFarbe
Set LastAuswahl = Nothing
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not LastAuswahl Is Nothing Then
If Target.Address  LastAuswahl.Address Then
LastAuswahl.Interior.ColorIndex = oldFarbe
Set LastAuswahl = Nothing
End If
End If
End Sub


Anzeige
AW: TextBox
28.05.2008 14:29:28
Ernst
Hallo Franz !
Erst einmal recht herzlichen Dank für deine Bemühungen. Ich habe meinen Code durch deinen Ersetzt funktioniert Allerdings nur wenn ich den Blattschutz aufgehoben habe (mit Blattschutz keine Zellenmarkierung )
Laufzeitfehler und bleibt bei folgender Zeile stehen:If Not LastAuswahl Is Nothing Then

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not LastAuswahl Is Nothing Then
If Target.Address  LastAuswahl.Address Then
LastAuswahl.Interior.ColorIndex = oldFarbe
Set LastAuswahl = Nothing
End If
End If
End Sub


Lg.Ernst

Anzeige
AW: TextBox
28.05.2008 15:54:55
fcs
Hallo Ernst,
die Variablen-Deklaration im allgemeinen Modul nicht vergessen, sonst geht garnichts.
Den Blattschutz EIN/AUS kann man auch noch in die Prozeduren einbauen
Im Tabellenmodul:
Me.Unprotect
Me.Protect
vor/nach allen Code-Abschnitten in denen die Farbe der Zelle geändert wird.
In Diese Arbeitsmappe entsprechend.
Worksheets("TabelleXYZ").Unprotect
Worksheets("TabelleXYZ").Protect
Am besten nach der Eingabe der Prozduren Datei Speichern/Schließen und wieder Öffnen, damit die Prozeduren sauber anlaufen können.
Gruß
Franz

AW: TextBox
28.05.2008 18:02:00
weingartner
Hallo Franz !
Recht herzlichen Dank aber das ist etwas zu hoch für mich habe meine Datei um die es sich handelt hochgeladen unter folgendem Link: https://www.herber.de/bbs/user/52682.zip
unter Gesamtansicht mo-do ganz unten ist die Textbox über die das laufen soll.....
Vieleicht wenn es deine Zeit zulässt könntest du dir das mal ansehen !
Recht herzlichen Dank und lg.Ernst

Anzeige
AW: TextBox
29.05.2008 08:41:00
fcs
Hallo Emst,
ich hab das Markieren der Fundstelle eingebaut. Inklusive Aus- und Einschalten des Blattschutzes.
Es schein zu funktionieren. Ich hab privat nur Excel97 und das lief mit deiner Datei nicht 100% stabil.
Ich weiß nicht ob dabei irgendetwas an Informationen verlosren gegangen ist. Test also erst einmal gründlich ob noch alles funktioniert und in Ordnung ist. Ansonsten müsstest die die entsprechenden Code-Abschnitte in deinem Original (besser Kopie von denem Original) austauschen/ergänzen.
Ich hab für die Zelle O103 zusätzlich einen Namen festgelegt. So kann man mit der Zellauswahl dort schnell hinnavigieren.
Ansonsten wäre ich bei so einer doch schon recht kompleen Datei vorsichtig so ein "nice to have" Gimmick einzubauen. Wenn was schief geht, dann ist es recht mühsehlig das wieder zu reparieren.
Gruß
Franz
https://www.herber.de/bbs/user/52686.zip

Anzeige
AW: Perfekt !
29.05.2008 09:36:37
Ernst
Hallo Franz !
Recht herzlichen Dank für deine Mühe ..
Lg.Ernst
ps. Hättest du auch eine Lösung zu meinem Listboxproblem ? (wenn die Listbox aktiviert wird das immer der Cursor auf dem zuletzt angewählten Eintrag steht......

AW: TextBox
29.05.2008 10:15:00
Ernst
Hallo Franz !
Ein kleiner Schönheitsfehler ist mir aufgefallen und zwar sollte ein Eintrag doppelt vorhanden sein zb.in Blatt1 und in Blatt4 so ergibt sich folgendes Verhalten bei Mehrmaliger Suche dieses Eintrags setzt sich eine Zelle nicht auf die Ursprungsfarbe zurück ist Unterschiedlich...(Es kommt auch vor das beide markiert bleiben)weiters wäre es toll wenn die Farbmarkierung beim drucken nicht mitübernommen würde ...aber sonst ist es perfekt genau so wie ich es mir vorgestellt habe ...Danke
Lg.Ernst

Anzeige
AW: TextBox
29.05.2008 14:50:28
fcs
Hallo Ernst,
Bastelstunde Teil 2 ist abgeschlossen.
Ich hab die Prozedur der Textbox noch so geändert, das ggf. vor dem Setzen einer neuen Markierung geprüft wird, ob noch eine Markierung vorhanden ist.
Unter DieseArbeitsmappe findest du die Prozedur Workbook-BeforePrint, die vor dem Drucken eine Markierung im Blatt Werktag zurücksetzt.
https://www.herber.de/bbs/user/52696.zip
Bezüglich ListBox-Problem:
Damit der vorherige Wert einer Listbox-Auswahl wieder gewählt wird, muss Excel wissen wo es diesen Wert finden kann.
Dies kann sein:
1. eine verknüpfte Zelle. Da geht es dann automatisch.
2. der Inhalt einer Zelle (nicht verknüpft!!) in einem Tabellenblatt.
Dies kann eine bestimmte Zelle sein oder Excel soll sie an Hand von Kriterien (Tabelle1, Spalte C, letzte ausgefüllte Zeile)
3. Der Inhalt einer in einem allgemeinen Modul als Global deklarierten Variablen in der Wert der Variablen beim Schließen des Formulars gespeichert wird.
4. Ein Userform wird beim Beenden der Userform nur ausgeblendet mit
UserformX.Hide
statt mit
Unload UserformX
Entleert
Dann wird ein Userform mit den zuletzt eingestellten werten wieder angezeigt.
Die Varianten 3 und 4 liefern nach dem Öffnen der Datei bei der 1. Anzeige des Userforms natürlich noch keine Listenauswahl, da noch keine Werte gespeichert sind.
Bei den Varianten 2 und 3 muss dann in der Initialisierungsprozedur den List- bzw. Comboboxen der Wert zugewiesen werden, nachdem ggf. die Auswahllisten per AddItem generiert worden sind.
Welche Variante erforderlich oder möglich ist muss du entscheiden.
Gruß
Franz

Anzeige
AW: TextBox
29.05.2008 17:15:00
weingartner
Hallo Franz !
Das ist jetzt wirklich vom feinsten ich bewundere deine Bastelfähigkeiten sind wirklich erstrebenswert !
sag" wenn ich mich für variante 4 bei der Listbox entscheide wo muss ich UserformX.Hide eintragen einen Eintrag Unload UserformX gibt es bei mir nicht !
Lg:eRNST

AW: TextBox
29.05.2008 17:38:25
fcs
Hallo Ernst,
jedes Userform hat ja normalweise einen OK, weiter, Schließen oder sonst was - CommandButton oder auch ein anderes Steuerelement, mit einer Prozedur in der eingegebenen Daten weiter verarbeitet werden oder die Eingabe abgebrochen wird.
Am Ende dieser Prozedur(en) bzw. an anderer geeigneter Position kann man dann den Befehl
Me.Hide
einfügen.
Me steht hier dann als Platzhalter für das Userform indem sich die Prozedur befindet.
Gruß
Franz

Anzeige
AW: Perfekt !
30.05.2008 08:19:48
Ernst
Hallo Franz !
Ich bin fündig geworden und das ganze läuft wunderbar ich bedanke mich nochmals recht Herzlich für deine ausgezeichnete Arbeit.
Lg. und schönes Wochenende wünscht Ernst

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige