Hallo liebe Wissenden,
meine Excel-Kenntnisse beschränken sich auf das Übliche. Makros sind mit leider ein großes Rätsel (bisher). Nun möchte ich eine Datei erstellen, bei der - denke ich - Makros nötig sind. Da die Tabelle diese Woche noch fertig werden muss, hilft mir leider ein Excelkurs kurzfristig nichts. Daher meine Bitte: Könnt Ihr mir bei folgenden Problemen helfen?
Es soll eine Kompetenzenmatrix erstellt werden. Wir haben also alle möglichen Stichworte gesammelt und dazugehörige „Fachleute“ bestimmt. Damit die Tabelle möglichst „userfriendly“ ist, habe ich die Stichworte alphabetisch sortiert. Nun soll eine Alphabetleiste den Link zu den jeweiligen Buchstaben anzeigen. D.h. Ich gehe oben auf dem Tabellenblatt auf bspw. „K“ und die Zellmarkierung soll auf den „K“ - Bereich gehen. Hyperlink funktioniert hier zu meinem Entsetzen nicht, da die Liste ja lebt und nachträglich weitere Zeilen eingefügt werden sollen. Dadurch verrutschen jedoch die Hyperlinks. Kann man diese irgendwie fixieren? Meine Befürchtung ist ja, dass ich eine Wenn - Dann - Bedingung schreiben muss, so in der Art:
Wenn ich oben auf K klicke, dann suche in Spalte B den Buchstaben K / den gleichen Wert und markiere diese Zelle.
Nur wie schreibe ich das?
- Problem:
Kann ich ein Eingabefeld für neue Stichwörter machen, die sich dann automatisch in die Liste einsortieren?
Danke und viele liebe Grüße,
Alex.
zu Anfangsbuchstaben springen
Wenn ich oben auf K klicke, dann suche in Spalte B den
Buchstaben K / den gleichen Wert und markiere diese Zelle.
Nur wie schreibe ich das?
Hi Alexandra,
Alt+F11, Einfügen Modul, dort folgenden Code eingeben. Die Liste der Stichworte/Fachleute wird in Spalte A erwartet, ggfs abändern.
Sub AuswahlListeErstellen()
With Worksheets("Tabelle2")
ABC = "AÄBCDEFGHIJKLMNOÖPQRSTUÜVWXYZ" 'ggfs ÄÖÜ entfernen
For n = 1 To Len(ABC)
.Cells(n, 1) = Mid(ABC, n, 1)
Next n
ActiveWorkbook.Names.Add Name:="ABC", RefersToR1C1:="=Tabelle2!R1C1:R" & n - 1 & "C1"
End With
Range("F1").Select
Selection.Offset(0, 1).Value = " "F1" Then Exit Sub
For n = 1 To Range("A65536").End(xlUp).Row
If UCase(Left(Cells(n, 1), 1)) = UCase(Target.Value) Then
Cells(n, 1).Select
Exit Sub
End If
Next n
MsgBox "Anfangsbuchstaben " & Target.Value & " nicht gefunden"
End Sub
Das Makro AuswahlListeErstellen() einmal ablaufen lassen, es erstellt in Tab2 die Abc-Liste und in Tabelle1!F1 dazu die Auswahl.
Anstatt F1 kannst du ja eine andere Zelle definieren wo deine Auswahlliste steht.
Gruß
Reinhard
Hallo Alexandra
Zum 1. Problem:
Mit einer Alphabetleiste das kann man machen. Dabei bekommt Jeder Buchstabe einen Schaltbutton und startet die Suchenfunktion für den entsprechenden Anfangsbuchstaben.
Der Code für die Buttons und die Suchfunktion:
Private Sub CommandButton1\_Click()
'Button für A
Suchen (CommandButton1.Caption)
End Sub
Private Sub CommandButton2\_Click()
'Button für B
Suchen (CommandButton2.Caption)
End Sub
etc. bis Button für Z
Sub Suchen(Text)
'Sucht den per Button gewählten Anfangsbuchstaben in Spalte B
On Error GoTo Begriff\_fehlt
Suchbegriff = Text & "\*"
Range("B4:B65536").Select
Selection.Find(What:=Suchbegriff, After:=ActiveCell, LookIn:=xlFormulas, LookAt \_
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= \_
False).Activate
ActiveCell.Select
GoTo weiter1
Begriff\_fehlt:
MsgBox ("Der Anfangsbuchstabe ist nicht vorhanden")
Range("B4").Select
weiter1:
End Sub
Eine weitere Möglichkeit der Positionierung in der Liste wäre den Anfang des Suchbegriffs in eine Zelle einzugeben und dann automatisch zu suchen. Habe ich in die Beispieldatei mit eingebaut
- Problem:
Kann ich ein Eingabefeld für neue Stichwörter machen, die sich
dann automatisch in die Liste einsortieren?
Theoretisch ja, wird aber etwas komplizierter.
Vorschlag: Neue Begriffe am Ende der Liste nachtragen. Dann Liste sortieren. Das Sortieren kann man auch mit einem Makro per Schaltbutton vereinfachen.
Der Code für den Sortierbutton:
Private Sub CommandButton30\_Click()
' Sortiert Liste ab Zeile 4 nach der Spalte B
Rows("4:65536").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, \_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B4").Select
End Sub
Da du dich mit Makros ja noch nicht auskennst, schicke ich dir eine Beispieldatei als Hilfe.
Gruß
Franz
zu Anf-Buchstaben springen / Einsortieren
Hi Alexandra,
wie vorher:
In das Modul:
Sub AuswahlListeErstellen()
With Worksheets("Tabelle2")
ABC = "AÄBCDEFGHIJKLMNOÖPQRSTUÜVWXYZ" 'ggfs ÄÖÜ entfernen
For n = 1 To Len(ABC)
.Cells(n, 1) = Mid(ABC, n, 1)
Next n
ActiveWorkbook.Names.Add Name:="ABC", RefersToR1C1:="=Tabelle2!R1C1:R" & n - 1 & "C1"
End With
Range("F1").Select
Selection.Offset(0, 1).Value = " Gruß
Reinhard
Der Code für die Buttons und die Suchfunktion:
Private Sub CommandButton1_Click()
'Button für A
Suchen (CommandButton1.Caption)
End Sub
Private Sub CommandButton2_Click()
'Button für B
Suchen (CommandButton2.Caption)
End Sub
etc. bis Button für Z
Hi Franz,
mit Application.Caller brauchst du nur eine Sub für die 26 Schaltflächen.
Gruß
Reinhard
Danke an Reinhard und Franz!!!
Ich werde gleich morgen früh Eure Empfehlungen in die Tat umsetzen. Ich hoffe, ich kann notfalls nochmal nachfragen?
Viele Grüße,
Alexandra.