Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Text in Zelle per Eingabe s und Zeilen kopiere

VBA Text in Zelle per Eingabe s und Zeilen kopiere
19.02.2018 13:32:25
Michael
Hallo zusammen,
vorab, ich bin ganz neu hier und mir bewusst dass jeder etwaige Helfer seine Unterstützung, zunächst, ohne Gegenleistung anbietet. Dafür möchte ich schon jetzt meinen grössten Dank aussprechen.
Nun zur Thematik,
ich bin Projektleiter in einem grossen Unternehmen und bin gerade dabei eine Excel-Vorlage für Stakeholderanalysen zu erstellen. Ich bin auch schon ein ganzes Stück weit gekommen, stosse allerdings jetzt an meine Grenzen.
Was ich will:
Ich habe in einer Excel Datei ein Tabellenblatt (Tabelle1) auf welcher ca. 11.000 Personen eingetragen sind (Name, Funktion, E-Mail, Telefon, Titel, Organisation, Bereich, Direktion, Arbeitsort usw.). In dieser Tabelle möchte ich nach Arbeitsort, Funktion, Organisation und Direktion per Eingabemaske suchen und alle gefundenen Zeilen automatisch in Tabelle 2 kopieren.
Was ich bisher geschafft habe:
Ich habe auf Tabelle 2 je 4 Buttons angelegt welche je für eine der o.g. Suchkriterien stehen. Bei Klick auf den Button kommt dann eine Eingabemaske mit z.B. "Funktion" eingeben. Klickt man OK, sucht er in den entsprechenden Spalte Zeilen nach dem eingegeben Wert und kopiert mir alle Zeilen mit dem gefundenen Wert in Tabelle 2. Also im Grunde das was ich will. Allerdings glaube ich A: Dass ich insbesondere bei der Definition der Variable einen sehr umständlichen Weg gegangen bin und B: Wichtiger, es muss die exakte Zeichenfolge vollständig eingegeben werden um Ergebnisse zu liefern. Beispiel: Ich möchte wenn ich in der Eingabemaske "Abteilungsleitung" eingebe alle Abteilungsleiter finden, diese sind etwa so eingetragen: "Abteilungsleitung Pflege OST". Mit meiner jetzigen Lösung muss eben genau diese Zeichenfolge eingegeben werden.
Ich habe alles mögliche Versucht, mit "Like" gekomme ich es einfach nicht hin. Zum jetzigen Zeitpunkt sind meine VBA Kenntnisse schlicht noch sehr rudimentär.
Das perfekte Ziel wäre alle 4 Suchkriterien in einer Eingabemaske zu haben und nach mehreren Kriterien gleichzeitig suchen zu können... aber eines nach dem anderen, ich bin im Moment schon Glücklich wenn ich nach ungefähren Wörtern suche könnte!
Anbei mal meine bisherige Lösung:
............................................................
Option Explicit
Sub RaumSA()
Dim Bereich As Range
Set Bereich = Tabelle2.Range("A1:P20000")
Bereich.ClearContents
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim Variable1 As String
Variable1 = InputBox("Raumnummer Eingeben", "Eingabe", Environ("Trakt Geschoss Raum"))
If Variable1 = "" Then
Exit Sub
Else
Tabelle3.Range("E1").Value = Variable1
End If
Dim Variable As String
Variable = Tabelle3.Range("E1").Value
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 6).Value = Variable Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1
Columns("A:M").EntireColumn.AutoFit
End If
Next Zeile
End With
End Sub

.............................................................
Ich wäre wirklich unglaublich dankbar wenn mir hier jemand, insbesondere bei dem "Ungefähr suchen" Problem helfen könnte.
Btw. macht schon Spass die VBA-Geschichte, freu mich schon da fit zu werden ;-)
PS: Mir ist auch bewusst dass ähnliche Funktionalität alleine bereits über die Bordfilter in Excel vorhanden ist, ich möchte jedoch unbedingt vermeiden dass später irgendjemand die Suchliste auch nur sieht und zudem ein bisschen mehr "Komfort" haben!
Dankbare Grüsse
Michael

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Text in Zelle per Eingabe s und Zeilen kopiere
19.02.2018 16:03:12
ChrisL
Hi Michael
Hauptproblem wird sein, dass einmal "Variable1" und einmal "Variable" steht. Darum ist die Aktivierung von "Option Explicit" sinnvoll. Abgesehen davon ist Variable ein nichtssagender Name.
If Variable1 Like "*" & .Cells(Zeile, 6).Value & "*" Then
Hier fehlt noch die Referenzierung (welches Tabellenblatt)
Columns("A:M").EntireColumn.AutoFit
Zudem steht AutoFit innerhalb der For-Next Schleife und wird darum unnötigerweise x-fach ausgeführt.
cu
Chris
AW: VBA Text in Zelle per Eingabe s und Zeilen kopiere
19.02.2018 16:35:17
Michael
Hi Chris,
vielen Dank für deine Antwort.
Das mit der Variable konnte ich jetzt deutlich vereinfachen und muss nicht mehr so einen unnötigen Umweg machen.
Sub FunktionSA()
Dim Bereich As Range
Set Bereich = Tabelle2.Range("A1:P20000")
Bereich.ClearContents
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim Variable As String
Variable = InputBox("Funktion Eingeben", "Eingabe", Environ("Funktion"))
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 4).Value = Variable Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1
Columns("A:M").EntireColumn.AutoFit
End If
Next Zeile
End With
End Sub

Ich schaffe es aber immer noch nicht nur eine Teilzeichenfolge suchen zu lassen. Wenn ich es mit "Like" versuche wie unten läuft es zwar durch, liefert offensichtlich aber keine Ergebnisse.
Sub FunktionSA()
Dim Bereich As Range
Set Bereich = Tabelle2.Range("A1:P20000")
Bereich.ClearContents
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim Variable As String
Variable = InputBox("Funktion Eingeben", "Eingabe", Environ("Funktion"))
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 4).Value Like "*Variable*" Then
.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1
Columns("A:M").EntireColumn.AutoFit
End If
Next Zeile
End With
End Sub

Hab noch angefangen ne Lösung mit lookat zu versuchen. Scheint zu funktionieren, aber hier weiss ich schlicht nicht wie ich mit dem Ergebnis alle Zeilen kopieren kann.
Sub SucheTest()
Dim s As String
Dim Zeile As Long
Dim Bereich As Range
Dim Letzte As Long
s = InputBox("Geben Sie den Suchbegriff ein!")
If s = "" Then Exit Sub
Set Bereich = Tabelle1.Range("A4:P15000").Find(s, lookat:=xlPart)
If Bereich Is Nothing Then
MsgBox "Name '" & s & "' konnte nicht gefunden werden!"
Else
Zeile = Bereich.Row
End If
End Sub

.....................................................................
Ohje, ich komm mir vor wie ein Analphabet, was ja auch irgendwie zutrifft. Ich war vor einigen Jahren ziemlich fit in LISP (AutoCAD) programmieren... hilft mir hier nur leider nich viel :-(
Anzeige
AW: VBA Text in Zelle per Eingabe s und Zeilen kopiere
19.02.2018 17:26:48
ChrisL
Sorry, umgekehrt wie vorher...
If .Cells(Zeile, 6).Value Like "*" & Variable & "*" Then
cu
Chris
AW: VBA Text in Zelle per Eingabe s und Zeilen kopiere
19.02.2018 17:31:38
Michael
Lieber Chris,
juhu es funktioniert!
Dank dir vielmals!!
You made my Day!!!

349 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige