Noch ein paar Tipps
13.03.2004 09:27:03
Christoph
Hi Monika,
verlass dich bitte nicht NUR auf meine Aussage, bezüglich der Datenmenge. Aber bei 60.000 Datensätzen ist Excel nicht geeignet. Excel ist ein Tabellenkalkulationsprogramm (und in diesem Bereich hervorragend) aber eben keine Datenbank.
Bei Datenbanken geht es darum, die Datensätze eineindeutig (in der Mathemathik heißt das so) darstellen bzw. zu referenzieren - man spricht auch von "referenzieller Integrität".
Ein Bsp: 100 Kunde (= 100 Kontakte) arbeiten bei Firma "xyz". In Excel gibtst du für jeden Kunden den Firmennamen neu ein. (dann werden dabei wahrscheinlich 10 verschiedene Versionen des Firmennamens entstehen: Xyz, X-yz, xyz AG, xyz Abteilung..., etc)
Abgesehen von solchen möglichen Schreibfehlern wird die Tabelle mit jedem Eintrag größer.
Noch ein Bsp:
Die Firma wechselt ihre Anschrift (zieht um). Dann hast du in Excel nur durch aufwendige Operationen die Möglichkeit, für jeden der 100 Einträge, die Daten zu aktualisieren. Und wenn du einen vergisst, dann gibt es diese Firma in deiner Tabelle mit zwei Adressen.
Später weiss man nicht mehr, welche Adresse stimmt, und wenn so ein doppelter Eintrag in deiner Tabelle öfters vorkommt, dann "schmeißt" man das Teil entweder in die Ecke, oder man setzt sich ein paar Wochen dran und recherchiert jeden einzelnen Datensatz.
In einer Datenbank steht die Firma "xyz" genau einmal in einer Tabelle und es wird zu jedem der 100 Kunden lediglich ein Bezug zu diesem Eintag "xyz" erstellt.
Und zum Dritten:
In deiner Tabelle "Daten" fügst du aus versehen irgendwo eine Zelle ein. (eben ein Mausklick zu viel). Anschließend sind in dieser Spalte alle Daten um eins verschoben. Das merkst du aber nicht gleich, sondern erst nach zwei Wochen. Jetzt sind schon wieder ein paar neue Daten dazugekommen. Du kannst dir ausrechenen, wie lange du brauchst, um das wieder hinzubiegen.
Ausserdem stellt sich die Frage, wieviele Leute greifen auf die Daten zu, wieviele Leute müssen gleichzeitig Daten ändern konnen, etc, etc. Eine Multi-User-Möglichkeit gibt es in Excel (meines Wissens) nicht. (außer über Tabellenfreigabe, das ist aber nicht das, was eine Datenbank bietet)
Also, ich kann dir nur empfehlen, tu dir selbst den Gefallen und nimm eine Datenbank. Access, oder besser noch MySql (seit dem Zusammenschluss mit SAP heißt das MaxDB). Mit dem Problem, dass man sich hier erst mal ein Datenmodell überlegen muss, etc, etc.
Das soll dich nicht davon abhalten, an deinen Eingabmasken weiter zu bauen. Denn was du hier an VBA einbringst, kannst du in Access auch wieder verwenden. (zwar nicht 1:1 aber zum größten Teil)
Ich hab damit zwar noch keine Erfahrung, aber ich schätze, man könnte deine Excel-Masken auch als "Frontend" der Datenbank benutzen - sprich die DB läuft auf einem Server und die Eingaben erfolgen über deine Excel-Masken.
Kennst du schon die geniale Recherche-Funktion hier im Forum über Google:
gib bei Goolge zB. ein:
"ComboBox mehrspaltig site:www.herber.de" (ohne Anführungszeichen)
Ein gutes Forum zu Access findest du bei www.spotlight.de
viele Grüße
Christoph Meffert
und jetzt zu dem Code:
Option Explicit
Private Sub TextBox1_Change()
Dim LRow As Long, i As Long
Dim wks1 As Worksheet
Set wks1 = Worksheets("Daten") 'deine Tabelle
LRow = wks1.Cells(Rows.Count, 1).End(xlUp).Row 'sucht von unten (Zeile 65536) nach oben
'die letzte Zeile mit einem Eintrag in Spalte 1
With Me 'die UserForm
ComboBox1.Clear 'Einträge erst löschen, sonst kämen die neuen einfach dazu
For i = 2 To LRow 'von Zeile 2 bis zur letzten Zeile mit Eintrag
If wks1.Cells(i, 1).Value Like TextBox1.Text Then 'wenn der Wert einer Zelle in Spalte1 ähnlich ist
'(Verwendung von * und ?) wie der Textbox-Eintrag, dann:
With .ComboBox1
.AddItem wks1.Cells(i, 1) 'füge diesen Wert der Spalte1 in die Liste der ComboBox hinzu
'Der Eintrag aus Spalte2 wäre dann Cells(i, 2)
End With
End If
Next i
End With
End Sub