Hallo Ka_trina
Annahme: In der Zeile 1 der Tabelle stehen als Überschriften die die jeweiligen Bezeichnungen der Felder. Darunter gibt ‘Nachname‘ und ‘Vorname‘.
Ich empfehle, eine UserForm zu erstellen.
Da die Daten wohl sensibel sind, würde ich darin eine TextBox1 mit Password-Eigenschaft einrichten und die Tabelle als solche mit dem Visible-Eigenschaftswert „xlSheetVeryHidden“ versehen. Mit einem eingefügten CommandButton1 soll die Passwordprüfung starten. Bei zufriedenstellender Eingabe werden die übrigen Steuerelemente freigeschaltet und damit der Zugang zu den Daten gewährt. Der Code des Makros sollte ebenfalls mit einem Password geschützt werden (Extras – Eigenschaften von VBA-Project – Schutz).
Für die Eingabe des zu suchenden Nachnamen wird eine ComboBox1 eingerichtet. Das Eingabefeld dient zur Suchwerteingabe, die Liste zur Anzeige aller Nachnamen und Vornamen, deren Nachnamen das Suchwort enthält. Diese wird angezeigt, wenn nach Eingabe eines Suchwortes ein einzurichtender CommandButton2 gedrückt wird, es sei denn, dass nur eine einzige passende Person gefunden wurde.
Nach Auswahl (Anklicken) eines einzelnen Namens in der Comboboxliste oder wenn nur ein passender Name gefunden wurde werden die Daten in einem einzurichtenden Label1 angezeigt.
Das Programm wird mit einem CommandButton3 beendet.
Private z()
Private Sub ComboBox1_click()
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
Label1.Caption = Label1.Caption + CStr(Cells(1, i)) + ": " + _
CStr(Cells(z(ComboBox1.ListIndex), i)) + vbCrLf
Next i
End Sub
Private Sub CommandButton1_Click()
If TextBox1 = "Password" Then
CommandButton2.Enabled = True
TextBox1.Visible = False
CommandButton1.Visible = False
ComboBox1.Enabled = True
End If
End Sub
Private Sub CommandButton2_Click()
ls = Cells(1, Columns.Count).End(xlToLeft).Column
For nn = 1 To ls
If Cells(1, nn) = "Nachname" Then 'nn ist Nr der Nachnamenspalte
lz = Cells(Rows.Count, nn).End(xlUp).Row
Exit For
End If
Next nn
If lz = 0 Then MsgBox "Fehler in der Tabelle: Spalte 'Nachname' nicht gefunden!": Exit Sub
For vn = 1 To ls
If Cells(1, vn) = "Vorname" Then Exit For 'vn ist Nr der Nachnamenspalte
Next vn
If vn > ls Then vn = 0
ReDim z(0)
j = -1
Label1.Caption = ""
a = ComboBox1.text
If Trim(a) <> "" Then
ComboBox1.Clear
If InStr(a, ",") Then a = Left(a, InStr(a, ",") - 1)
For i = 2 To lz
If InStr(LCase(Cells(i, nn)), LCase(Trim(a))) > 0 Then
If vn > 0 Then
ComboBox1.AddItem Cells(i, nn) + ", " + Cells(i, vn)
Else
ComboBox1.AddItem Cells(i, nn)
End If
j = j + 1
ReDim Preserve z(j)
z(j) = i
End If
Next i
End If
Select Case j
Case -1
Label1.Caption = "Kein passender Eintrag vorhanden!"
Case 0
For k = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
Label1.Caption = Label1.Caption + CStr(Cells(1, k)) + ": " + _
CStr(Cells(z(j), k)) + vbCrLf
Next k
Case Else
ComboBox1.DropDown
End Select
End Sub
Private Sub CommandButton3_Click()
Unload UserForm4
End Sub
Private Sub TextBox2_Change()
CommandButton2.Caption = "Suchen"
such_i = 0
End Sub
Private Sub TextBox3_Change()
CommandButton2.Caption = "Suchen"
such_i = 0
End Sub
Private Sub UserForm_initialize()
worksheets("Tabelle1").Activate
TextBox1.PasswordChar = "*"
CommandButton2.Enabled = False
CommandButton1.Caption = "Prüfen"
CommandButton2.Caption = "Suchen"
CommandButton3.Caption = "Abbrechen"
Label1.Caption = ""
ComboBox1.Enabled = False
End Sub
Gruß
Holger
Ka_trina schrieb am 06.05.2009 14:06:27:
Hallo Leute,
also ich habe folgendes Problem.
Ich möchte in Tabelle 1 eine Liste erstellen, in dem alle Mitarbeiter der Firma enthalten sind und deren Funktionen.
Der Chef soll nur noch den Namen eingeben müssen und alle Funktionen sollen erscheinen.
Wie ist das möglich??
Hat jemand eine Idee...
vielleicht kann jemand mir ein kleines Bsp. erschaffen.
E-mail ist: Ka_trina@web.de
Danke schon mal
Katrina |