Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten in Felder zurückschreiben

Daten in Felder zurückschreiben
19.03.2007 16:06:38
Andreas

Hallo Excelprofis!
Ich habe mir eine Excelmappe angelegt, in der ich im 1. Blatt mit Hilfe von verschiedenen Textfeldern,
Kontrollkästchen und Befehlsschaltflächen verschiedene Firmen und Personendaten eingeben kann, die dann per Befehlsschaltfläche ("Eintragen") in ein 2. Blatt geschrieben werden.
Die Eingabe funktioniert, Dank dieses Forums, auch schon super.
Jetzt muss ich aber noch folgendes Problem lösen:
Damit ich eine Firma nicht 2 mal eingebe müsste bei der Eingabe in die "TextBoxFirma" geprüft werden, ob diese im 2.Blatt (Auswertung) schon vorhanden ist.
Am Besten wäre es, wenn schon bei der Eingabe des 1. 2. und 3. Buchstabens alle Einträge die mit diesem
Buchstaben anfangen per Listenfeld (im Moment noch "TextBoxFirma") angezeigt werden und dann beim darüberfahren mit der Maus die restlichen Daten in den Feldern angezeigt werden und per Mausklick die Daten der Auswahl in die Eingabemaske zurückgeschrieben werden. Ganz oben müsste allerdings ein Leereintrag sein, falls die Firma noch nicht eingetragen ist.
Die Schaltfläche "Ändern" soll später dazu dienen, einen gefundenen Datensatz nach einer Änderung zu ersetzen und die Schaltfläche "Löschen" soll später dazu dienen einen gefundenen Datensatz zu löschen. Die Schaltfläche "Eingabe" soll einen neuen Datensatz anhängen.
Ich weiß nicht ob das überhaupt geht, oder ob es eine andere Lösung gibt.
Ich hoffe ich habe mich verständlich ausgedrückt und mir kann Jemand helfen. Leider habe ich kaum VBA - Kenntnisse.
Eine Beispielmappe habe ich mal hochgeladen.

Die Datei https://www.herber.de/bbs/user/41154.xls wurde aus Datenschutzgründen gelöscht

Vielen Dank im vorraus!
mfg Andreas

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in Felder zurückschreiben
19.03.2007 22:23:06
Beni
Hallo Andreas,
hier ein kleiner Ansatz, ich würde das Ganze mit einer UserForm lösen,
ein kleines Beispiel.
https://www.herber.de/bbs/user/41196.xls
Gruss Beni
https://www.herber.de/bbs/user/41195.xls

Private Sub TextBoxFirma_Change()
ListBox1.Clear
Dim c, findAdd As Variant
Dim s As Integer
Set c = Sheets("Auswertung").Columns(2).Find(What:=TextBoxFirma.Value & "*", LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
ListBox1.AddItem c.Value
ListBox1.ColumnCount = 10
For s = 1 To 9
ListBox1.List(0, s) = c(1, s + 1)
Next s
End If
findAdd = c.Address
Do
Loop Until c.Address = findAdd
Set c = Sheets("Auswertung").Columns(2).FindNext(After:=c(1, 1))
If Not c Is Nothing And Not c.Address = findAdd Then
ListBox1.AddItem c.Value
For s = 1 To 9
ListBox1.List(0, s) = c(1, s + 1)
Next s
End If
End Sub

Anzeige
AW: Daten in Felder zurückschreiben
19.03.2007 22:45:53
Andreas
Hallo Beni!
Danke für die Antwort!
Könnte mann die Userform so verändern, dass beim überfahren mit der Maus über einen Eintrag die dazugehörigen Daten in den Eingabefeldern angezeigt werden und bei klick auf einen Eintrag die Daten in die Eingabefelder geschrieben werden, damit man diese dann ergänzen oder z.B. löschen kann?
mfg Andreas
AW: Daten in Felder zurückschreiben
19.03.2007 23:43:57
Beni
Hallo Andreas,
für das ist er Heute zu spät, aber ich werde Dir eine Lösung liefern.
Gruss bis später Beni
AW: Daten in Felder zurückschreiben
20.03.2007 00:03:10
Andreas
Das wäre ja super!
Danke!
Einen schönen Abend noch.
mfg, Andreas
AW: Frage
20.03.2007 20:54:14
Beni
Hallo Andreas,
können bei der Auswahl von Geschäftarten / Sprache / Besuch 1 bis 4, mehrere möglich sein?
dann braucht es Chexbox, andernfalls Optionsbutten.
Gruss Beni
Anzeige
AW: Frage
20.03.2007 21:26:40
Andreas
Hallo Beni!
Ja, bei Geschäftarten / Sprache / Besuch 1 bis 4 können auch mehrere ausgewählt werden.
mfg, Andreas
AW: Frage
20.03.2007 22:53:32
Beni
Hallo Andreas,
für Heute mache ich Feierabend, musst Dich noch ein bisschen gedulden.
Gruss Beni
AW: Frage
20.03.2007 23:21:17
Andreas
Hallo Beni!
Einen schönen Abend noch. Danke für die Hilfe!
mfg Andreas
AW: Frage
21.03.2007 21:52:20
Beni
Hallo Andreas,
eine Testversion, ich werde in der Zwischenzeit noch mehr Komfort einbringen,
mit Ctrl+i kannt Du die UserForm öffnen.
Gruss Beni
https://www.herber.de/bbs/user/41272.xls
AW: Frage
21.03.2007 22:28:40
Andreas
Hallo Beni!
Das sieht ja schon super aus. Danke!
Zwei Fragen:
Da in der Tabelle "Auswertung" am Ende so um die 1000 Datensätze stehen, müsste man die Daten in der Listbox nach Buchstaben (nach Spalte Firma) ordnen können. Am besten durch Eingabe von Buchstaben in z.B. einem anderen Feld. Geht so etwas?
Da ich die Nummerierung in Spalte 1 des 2. Blattes nicht benötige kann man diese eigendlich rausnehmen, auch in der UserForm.
Achso, ich müsste auch eine Möglichkeit haben einen komplett neuen Datensatz einzufügen.
Und könnte man die Spalten in der Listbox anders anordnen?
Vielen, vielen Dank für deine Mühe.
mfg Andreas
Anzeige
AW: Frage
21.03.2007 22:35:25
Andreas
Hallo Beni!
Habe gerade gesehen, dass ja die Eingabe eines neuen Datensatzes möglich ist. Diese Funktion müsste allerdings immer zur verfügung stehen, da man ja erst beim durchsuchen des Listenfeldes merkt wenn ein Kunde noch nicht registriet ist.
nochmals Danke!
mfg, Andreas
AW: Frage
21.03.2007 22:58:51
Beni
Hallo Andreas,
die Listbox ist gleich wie die Tabelle, wenn die Tabelle nach Firma sortiert wird, so übernimt das die Listbox. Werde ich noch einbauen.
Die Nummerierung ist wichtig, weil das der Schlüssel zum Datensatz ist, z,.B bei Aenderung.
man kann die Spalte in der Listbox ausblenden.
Wenn Du die Userform öffnest sind die Controls (TextBox, ComboBox,CheckBox) leer und auf einem Button steht Hinzufügen, dann werden die Eingaben hizugefügt.
Klickst Du auf einen Datensatz in der Listbox, füllen sich die Controls und auf dem Butten steht Aendern, dann wird der Datensatz überschrieben.
Mit Doppelklick auf Userform leeren sich die Controls
Spaltenanordnung in der Listbox, enspricht der in der Tabelle, die Spaltenanordnung enspricht der Userform und müsste umprogrammiert werden.
Die Suchfunktion werde noch verbessern.
Gruss Beni
https://www.herber.de/bbs/user/41273.xls
Anzeige
AW: Frage
21.03.2007 23:16:06
Andreas
Hallo Beni!
Das ist wirklich schon super, Danke für deine Mühe!
Die Spaltenanordnung ist eigendlich nur wegen der Übersichtlichkeit wichtig. Es müssten eigendlich nur die beiden Spalten "Hauptsitz" und "Filiale" zum Beispiel nach "Mail" stehen, Da diese Informationen bei der Eingabe, bzw. Suche unwichtig sind.
Unter "Innendekoration" muß noch eine Checkbox "Andere". Aber das bekomme ich dann bestimmt auch hin.
Ich bin sehr froh, dass du mir hilfst. Das hätte ich so niemals hinbekommen.
mfg, Andreas
AW: Frage
22.03.2007 07:44:24
Andreas
Hallo Beni!
Ich habe mir noch mal ein par Gedanken gemacht. Der CommandButton "Eintragen" muß ständig Verfügbar sein, weil es z.B. sein kann das eine Firma durch 2 Vertreter (verschiedene Abteilungen) vertreten wird. In diesem Fall wäre es günstig wenn ich die Firma durch die Suche finden kann aber nach Änderung eines Feldes zusätzlich anlegen kann.
Die Auswertungsliste wird oft zum verschicken von Serienbriefen benutzt. Deshalb ist es wichtig alle Vertreter einer Firma zu registrieren.
Einen schönen Tag.
mfg Andreas
Anzeige
AW: wieder ein Stück weiter
22.03.2007 22:38:51
Beni
Hallo Andreas,
beim öffnen wird die Menüleiste Menü "Formular" ergänzt und beim schliessen wieder gelöscht.
Die Suchfunktion habe ich komfortabler gemacht.
Die DS-Nr wird in der Listbox ausgeblendet.
Hinzufügen und Aendern sind zwei Buttens.
Die gewünschten Spalten sind verschoben.
Die Checkbox "Andere" muss ich noch machen.
Gruss Beni
https://www.herber.de/bbs/user/41306.xls
AW: wieder ein Stück weiter
22.03.2007 23:15:11
Beni
Hallo Andreas,
Die Checkbox "Andere" ist erledigt.
In der Listbox kannst Du auch mit der Speiltaste navigieren.
Was man noch machen könnte, wenn die PLZ eigegeben wird, dass die Stadt eingefügt wird, oder umgekehrt, aber dafür müsste vorher das Land augewählt werden.
Gruss Beni
https://www.herber.de/bbs/user/41307.xls
Anzeige
AW: wieder ein Stück weiter
23.03.2007 08:22:35
Andreas
Hallo beni!
Vielen, vielen Dank! Ich werde die neuen Funktionen heute Abend testen und Feedback geben, bin gestern nicht mehr dazu gekommen.
Einen schönen Tag
mfg Andreas
AW: wieder ein Stück weiter
24.03.2007 10:56:31
Andreas
Hallo Beni!
Das mit der PLZ ist nicht notwendig, wir wollen es nicht zu weit treiben.
Ich danke dir für deine Mühe! Du hast mir sehr geholfen.
Noch 2 Fragen:
Ich möchte das die Userform beim Öffnen der Mappe automatisch öffnet und das diese sich an verschiedene Bildschirmauflösungen anpasst. Für die Bildschirmauflösung habe ich folgenden Artikel (Code) gefunden. Kann man den bei deiner Userform verwenden?
Ach so, doch noch was. Wie wird die Spaltengröße in der unteren Listbox gesteuert, kann man diese anpassen?
Artikel.
Beim Erstellen einer Userform wird diese normalerweise so gestaltet, dass sie auf dem Bildschirm des Erstellers optimal aussieht.
Sobald diese Userform aber mit einer anderen Bildschirmauflösung betrachtet wird, z.B. auf anderen Arbeitsplätzen, kann es wünschenswert sein, diese Userform in der Größe zu ändern. Leider besitzen die Userforms unter VBA, im Gegensatz zu denen unter VB, keine direkte Resize-Möglichkeit; und selbst wenn, dann würden die Controls auf der Userform nicht automatisch mitangepasst (was sie aber auch unter VB nicht machen).
Um eine Userform auflösungsunabhängig zu gestalten, kann nachfolgende Prozedur SetDeviceIndependentWindow verwendet werden. Mit dieser Prozedur wird die aktuelle Bildschirm-auflösung mit der verglichen, unter der die Userform erstellt wurde. Diese Angaben werden dabei als Konstante angegeben. Hat sich die Auflösung geändert, werden die Userform und alle Standard-Controls in der Größe und Position an die neue Auflösung angepasst. Dazu genügt es, aus der Userform diese Prozedur aufzurufen und die zu ändernde Userform als Parameter mitanzugeben.
In der Prozedur werden dann alle Controls der Form durchlaufen (If TypeOf ... Is ... Then) und an die aktuelle Bildschirmauflösung angepasst. Auch wird - sofern möglich - die Schriftgröße neuberechnet und mitgeändert.
Falls Controls verwendet werden, die nicht zu den Standard-Controls der MSForms gehören, können diese in die Liste der Control-Typen hinzugefügt werden. Ansonsten wird versucht, diese in der Größe und Position zu ändern; sollten entsprechende Eigenschaften nicht geändert werden können oder existieren, müssen diese Fehler noch abgefangen werden.
Sub Userform_Activate()
SetDeviceIndependentWindow Me
End Sub

Der Aufruf der Prozedur kann dann in der "Activate"-Methode der Userform erfolgen.
Option Explicit
' Bildschirmauflösung, unter der die Userform erstellt wurde
Public Const X_RESOLUTION = 1280 '640
Public Const Y_RESOLUTION = 1024 '480

Public Sub SetDeviceIndependentWindow(FormName As Object)
' Diese Prozedur passt die Größe und Anordnung einer Userform
' an die jeweilige Auflösung an.
' Idee und Grundgerüst von Frank Lubitz
' Im Prozeduraufruf muss die zu ändernde Userform angegeben werden
Dim XFactor As Single     ' Horizontal resize ratio
Dim YFactor As Single     ' Vertical resize ratio
Dim X As Integer          ' For/Next loop variable
Dim xPixels As Single
Dim yPixels As Single
Dim HeightChange As Long
Dim WidthChange  As Long
Dim OldHeight As Long
Dim OldWidth  As Long
Dim ctlControl As Control
' Fehlermeldungen abfangen
On Error GoTo ErrorHandler
' Vergrößerungs-/Verkleinerungsfaktor der aktuellen Auflösung
' in Bezug auf die ursprünglche Auflösung
XFactor = System.HorizontalResolution / X_RESOLUTION
YFactor = System.VerticalResolution / Y_RESOLUTION
' Keine Neuanordung bei identischer Auflösung
If XFactor = 1 And YFactor = 1 Then Exit Sub
' Alte Einstellungen sichern
OldHeight = FormName.Height
OldWidth = FormName.Width
' Neue Abmessung der Userform berechnen
FormName.Height = FormName.Height * YFactor
FormName.Width = FormName.Width * XFactor
' Änderungen der Abmessungen
HeightChange = FormName.Height - OldHeight
WidthChange = FormName.Width - OldWidth
' Userform neu positionieren
FormName.Left = FormName.Left - WidthChange / 2
FormName.Top = FormName.Top - HeightChange / 2
' Alle Controls durchlaufen und ändern
For Each ctlControl In FormName.Controls
Debug.Print ctlControl.Name
If TypeOf ctlControl Is ComboBox Then
' If Not a Simple Combo box
ctlControl.FontSize = ctlControl.FontSize * XFactor
If ctlControl.Style <> 1 Then
ControlResize3 ctlControl, XFactor, YFactor
End If
ElseIf TypeOf ctlControl Is TextBox Then
ControlResize ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is Label Then
ControlResize ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is CheckBox Then
ControlResize2 ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is CommandButton Then
ControlResize2 ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is ListBox Then
ControlResize ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is Image Then
ControlResize3 ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is OptionButton Then
ControlResize2 ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is MultiPage Then
ControlResize2 ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is ToggleButton Then
ControlResize2 ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is SpinButton Then
ControlResize3 ctlControl, XFactor, YFactor
ElseIf TypeOf ctlControl Is ScrollBar Then
ControlResize3 ctlControl, XFactor, YFactor
Else
ControlResize2 ctlControl, XFactor, YFactor
End If
Next ctlControl
Exit Sub
ErrorHandler:
' try to handle next control
Resume Next
End Sub

Function ControlResize(Control As Control, XFactor, YFactor)
With Control
.FontSize = .FontSize * XFactor
.Move .Left * XFactor, .Top * YFactor, .Width * XFactor, .Height * YFactor
End With
End Function

Function ControlResize2(Control As Control, XFactor, YFactor)
With Control
.Font.Size = .Font.Size * XFactor
.Move .Left * XFactor, .Top * YFactor, .Width * XFactor, .Height * YFactor
End With
End Function

Function ControlResize3(Control As Control, XFactor, YFactor)
With Control
.Move .Left * XFactor, .Top * YFactor, .Width * XFactor, .Height * YFactor
End With
End Function

Ein schönes WE und besten Dank.
mfg Andreas
Anzeige
AW: wieder ein Stück weiter
25.03.2007 11:11:00
Andreas
Hallo Beni!
Mir sind beim testen noch 2 Sachen aufgefallen:
Ich muß beim suchen im Feld Firma immer mit einem Großbuchstaben anfangen (klar, die Firmen fangen ja auch immer mit einem Großbuchstaben an). Kann man das trotzdem ändern, sodass Groß- und Kleinschreibung egal sind?
Wenn ich auf den Button "Suchen" klicke wird ja das untere Listenfeld nach dem Sucheintrag sortiert. Wenn ich aber auf einen gefundenen Eintrag im Listenfeld klicke wird die Sortierung wieder aufgehoben. Wäre es möglich die Sortierung bis zum nächsten Suchbefehl zu belassen.
Ich hoffe ich strapaziere deine Mühe nicht zu sehr.
Einen schönen Sonntag noch!
mfg, Andreas
Anzeige
AW: wieder ein Stück weiter
25.03.2007 17:28:46
Andreas
Hallo Beni!
Das mit den Großbuchstaben aus meiner letzten Nachricht hat sich erledigt, geht doch mit kleinbuchstaben. Sorry!
mfg Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige