Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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
Inhaltsverzeichnis

Eintrag suchen, unterhalb neue Zeile mit Text einfügen

Eintrag suchen, unterhalb neue Zeile mit Text einfügen
04.01.2024 14:57:01
Michael_79
Hallo Piet,
hallo Gemeinde,

ich wünsche noch einen guten Start ins 2024.

Weiterhin zu meinem Anliegen.

Danke Piet für deine Hilfe und deine Kritik.

Wie es sich darstellt, habe ich bei weitem nicht die Kenntnisse, die ich zu haben glaubte. Daher komme ich mit meinem Problem nicht weiter.

Sub ZeilePlus_Einsetzen()


Dim Was$, c, fA
Was = "TEXT"
With ActiveSheet.Cells
Set c = .Find(Was, LookIn:=xlValues)
If Not c Is Nothing Then
fA = c.Address
Do
Rows(c.Row + 1).Insert Shift:=xlDown
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address > fA
End If
End With
End Sub


Ich hätte gerne weiterhin folgendes:

Einen Eintrag in unterschiedlichen Tabellenblättern suchen (Eintrag liegt an unterschiedlichen Positionen, oder garnicht),
unter diesem Eintrag soll eine neue Zeile direkt mit einem Kopierten Text (oder komplette Zeile) eingefügt werden.


Dec Code habe ich mir auch mit Hilfe zusammengeschustert, scheint aber nicht das Beste zu sein.
Zudem, wenn ich mehrere Tabellenblätter markiere wird nur im ersten gesucht und eingefügt.
Da es ca.20 sind, wollte ich mir die Arbeit damit erleichtern.

Für weitere Hilfe bin ich sehr dankbar.

Beste Grüße

Michael

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
04.01.2024 17:17:39
Yal
Hallo Michael,

lustigerweise gibt es zwar in Excel die Möglichkeit, mehrere Blätter auszuwählen, aber keine Möglichkeit mit VBA zu lesen, welche Blätter ausgewählt sind, wenn mehr als eine sind.

Daher musst Du dein Vorgehensweise anpassen: entweder alle Blätter, oder im Voraus definieren, in welchen Blätter gesucht wird.

Folgende Code geht über alle Blätter:

Private Sub Suchen(gesuchteText As String)

Dim Quelle As Range
Dim WS As Worksheet
Dim Erg As Range

Const cGesuchteText = "TEXT"

Set Quelle = Worksheets("Tabelle1").Range("A2:D2")
For Each WS In ThisWorkbook.Worksheets
Set Erg = Nothing
Set Erg = WS.Cells.Find(What:=cGesuchteText, LookIn:=xlValues)
If Not Erg Is Nothing Then
Erg.EntireRow(2).Insert Shift:=xlDown
Quelle.Copy
Erg.Range("A2").Paste
Application.CutCopyMode = False
End If
Next
End Sub

Gesuchte Text und Quellbereich sind beispielhaft. Anpassen notwendig

VG
Yal
Anzeige
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
08.01.2024 14:57:04
daniel
Hi
wenn alle selektierten Tabellenblätter bearbeitet werden sollen, dann so.

Sub test()

Dim sh As Worksheet
Dim WAS As String
Dim FirstFound As String
Dim c As Range
Dim EinfügeZeile As Range

Set EinfügeZeile = Sheets("Tabelle1").Rows(1) 'Zeile, die eingefügt werden soll
EinfügeZeile.Copy

WAS = "TEXT"

For Each sh In ActiveWindow.SelectedSheets
With sh
Set c = .Cells.Find(what:=WAS, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
FirstFound = c.Address
Do
EinfügeZeile.Copy
.Rows(c.Row + 1).Insert
Set c = .Cells.FindNext(c)
Loop Until c.Address = FirstFound
End If
End With
Next

End Sub

Gruß Daniel
Anzeige
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
10.01.2024 07:38:38
Michael_79
Moin Daniel,

das ist nahezu perfekt. Danke sehr, das ist die 98% Lösung. ;)

Vielleicht kannst du da noch etwas unterstützen. Das Problemchen ist, dass der Text der eingefügt werden soll, dem gesuchten Text gleicht, lediglich die neben Zeilen haben andere Werte. (der gesuchte Eintrag ist in den Blättern entweder 1x oder garnicht vorhanden)

D.h. in der Paxis, wenn ich den einzufügenden Text in der Tabelle eingebe, wird er auch gefunden und anschließend ca. 9999999...x eigefügt.

Auch nochmaks danke an Yal

Grüße
Michael
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
05.01.2024 07:39:24
Michael_79
Vielen Dank Yal für die rasche Antwort.

Wenn ich in "Set Quelle = Worksheets("Tabelle1").Range("A2:D2")" den korrekten Tabellennamen eintrage, wird der kopierte Text auch nur dort gesucht und eingefügt.
Die restlichen Tabellenblätter bleiben unberührt.

Einen Fehler ('438' Objekt unterstützt diese Eigenschaft oder Methode nicht) wirft er bei "Erg.Range("A2").Paste" raus.

Hättest du da evtl. noch Rat?

Danke schonmal
Anzeige
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
05.01.2024 09:12:51
Yal
Hallo Michael,

wenn bereit innerhlab von "Worksheets("Tabelle1").Range("A2:D2")" den gesuchten Text (hier als cGesuchteText ="TEXT") vorhanden ist, dann gehört diese Stelle auch zu den Treffer und wird dort auch eingefügt. Solltest Du die "Tabelle1" als Teil der Suche auschliessen, siehe Code unten. Darin ist auch die Korrektur wg 438.

Schau dir die Online-Hilfe der Funktion Find https://learn.microsoft.com/de-de/office/vba/api/excel.range.find
Vielleicht musst Du die LookAt und MatchCase Parameter anpassen. Um die vertiefte Auseinandersetzung mit solchen Details wirst Du dich nicht drücken können. Aber es ist nur am Anfang schwer ;-)

Private Sub Suchen(gesuchteText As String)

Dim Quelle As Range
Dim WS As Worksheet
Dim Erg As Range

Const cGesuchteText = "TEXT"

Set Quelle = Worksheets("Tabelle1").Range("A2:D2")
For Each WS In ThisWorkbook.Worksheets
If WS.Name > "Tabelle1" Then
Set Erg = Nothing
Set Erg = WS.Cells.Find(What:=cGesuchteText, LookIn:=xlValues)
If Not Erg Is Nothing Then
Erg.EntireRow(2).Insert Shift:=xlDown
Quelle.Copy
Erg.Range("A2").PasteSpecial xlPasteAll
Application.CutCopyMode = False
End If
End If
Next
End Sub


VG
Yal
Anzeige
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
08.01.2024 11:56:08
Michael_79
Vielen dank Yal für deine Zeit und Unterstützung.


Dein Werk funktioniert bis zu vorherigen Fehler super. Leider nur in einem Tabellenbaltt.

Sobald ich die aktualisierte Version nutze, wird seltsamerweise nicht mehr der kopierte Text, sondern der Inhalt aus c2 eingefügt.
Das aber wie von dir korrigiert auf allen Tabellenblättern, in denen auch der Suchbegriff zu finden ist.

Sollte vlt. eine Analyse und Lösung möglich sein wäre ich wirklich sehr dankbar.

hier nochal der Befehl.

Sub such()

Dim Quelle As Range
Dim WS As Worksheet
Dim Erg As Range

Const cGesuchteText = "TEXT"

Set Quelle = Worksheets("Tabellenbalttname").Range("A2:D2")
For Each WS In ThisWorkbook.Worksheets
Set Erg = Nothing
Set Erg = WS.Cells.Find(What:=cGesuchteText, LookIn:=xlValues)
If Not Erg Is Nothing Then
Erg.EntireRow(2).Insert Shift:=xlDown
Quelle.Copy
Erg.Range("A2").PasteSpecial xlPasteAll
Application.CutCopyMode = False
End If
Next
End Sub
Anzeige
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
08.01.2024 12:20:12
Yal
Hallo Michael

versuche, anstatt
Erg.Range("A2").PasteSpecial xlPasteAll

folgendes:
Erg.Range("A2").PasteSpecial xlPasteValues

Beim "xlPasteAll" werden Formeln kopiert, die dann an eine andere Stellen eben ein andere Ergbenis herausgeben können.

Analyse und Lösung ist ohne Datei nicht möglich. Und auch wenn: ohne die passende Einarbeitung in VBA deinerseits wird es nur Symptom-Bekämpfung, bis der nächsten -aus deiner Sicht- unerklärlichen Effekt hochkommt.


Hier noch ein paar Tipps, die das Verstehen + Lernen von VBA beschleunigt:
_ immer zuerst Makrorekorder verwenden (mache ich immer noch). Kurze Aufnahme machen und Code anschauen.
_ Code im Schritt-Modus laufen lassen (F8)
_ dabei das Lokalfenster offen halten (Ansicht, Lokalfenster), um den Zustand der Variablen zu sehen.
_ neugierig sein: was steht in dem Objekt hinter dem "+"
_ Überwachungsausdrücke verwenden: Variable oder Ausdruck markieren, Rechtsklick auf "Überwachung hinzufügen..."
_ Variable verwenden, nur um deren Stand im Lokalfenster zu beobachten.
_ auch gut: Debug.Print xxVariableName, druckt den Zustand einer Variable in das Direktfenster.
_ wenn ein VBA-Begriff nicht bekannt ist, Cursor drauf platzieren und Strg+F1, um an der Online-Hilfe zu gelangen. Dort sich die Zeit nehmen, grundlich zu lesen (die Aufmachung ist nur am Anfang gewöhnungsbedürftig) und die gegebenen Beispiele anzuschauen.
_ wenn die erste Schritte schon gemacht sind, das Objektkatalog anschauen (Ansicht, Objekt-Katalog)


VG
Yal
Anzeige
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
08.01.2024 13:17:13
Michael_79
Yal, vielen vielen Dank für die hilfreichen und ausfühlichen Hinweise.

Ich werde dich nicht weiter damit belasten verusche mich selbst durchzukämpfen.

Danke nochmal und viele Grüße
Michael
AW: Eintrag suchen, unterhalb neue Zeile mit Text einfügen
08.01.2024 16:18:28
Yal
hallo Michael,

ich fühle mich nicht belastet :-)

Korrekur zu meiner erste Aussage: es gibt doch die Möglichkeit, ausgewählte Blätter durchzugehen (hatte mich überrascht, diese nicht zu finden). Daniel hat sie geliefert.

VG
Yal

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige