Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
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
Kopieren , in Neues Blatt einfügen
27.09.2021 13:28:50
Dieter
Hey all,
Mein unten stehender Code geht soweit, bis auf das er mir nicht ab Zeile A2 sucht und dann im neuen Blatt bei A2 einfügt
Was muss ich da ändern ? Komm leider nicht drauf trotz auch nach langen suchen.

Private Sub CommandButton3_Click()
'    UserForm1.Hide
Dim ws As Worksheet, _
rErg As Range, _
strSearch As String, _
StrFirstFound As String, _
iFound As Integer
strSearch = InputBox("wonach wollen Sie suchen?", , "")
If strSearch = "" Then Exit Sub
On Error Resume Next           'ist das da richtig ?
Worksheets.Add Before:=Worksheets(1)   'wird ein Tabellenblatt ganz rechts erstellt
ActiveSheet.Name = "Gefunden"
'       Worksheets("Umsatz15").Rows(1).Copy Destination:= _
'       Worksheets("Gefunden").[a1]
Application.DisplayAlerts = True         ' steht das an richtiger Stelle ?
For Each ws In ThisWorkbook.Worksheets
If ws.Index > 1 Then
Set rErg = ws.Range("C:C").Find(strSearch)
If Not rErg Is Nothing Then
StrFirstFound = rErg.Address
Do
iFound = iFound + 1
'Ausgabe Fundzeile
rErg.EntireRow.Copy (ThisWorkbook.Worksheets(1).Cells(iFound, 1))
Set rErg = ws.Range("C:C").FindNext(rErg)
Loop While Not rErg Is Nothing And rErg.Address  StrFirstFound
End If
End If
Next ' ws
End Sub
Ich bin für jede Hilfe dankbar.
Mfg.
Dieter

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 13:37:04
Rudi

iFound = 1
For Each ws In ThisWorkbook.Worksheets
....

AW: Kopieren , in Neues Blatt einfügen
27.09.2021 13:55:15
Dieter
Hallo Rudi,
Das klappt überhaupt nicht leider
Denke das da was bei Ausgabe Fundzeile geändert werden muss, wo er das kopieren anfängt.
Der soll ja das gefundene im neuen Blatt an A2 einfügen
Gruß
Dieter
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 13:48:08
ChrisL
Hi Dieter
Eigentlich müsstest du ja nur C:C in A:A ändern, aber wenn wir schon dabei sind...
On Error Resume Next war wohl dafür gedacht, wenn das Blatt "Gefunden" bereits vorhanden ist. Geht zwar, aber ist nicht die feine Art (ein leeres Blatt wird trotzdem erzeugt und zudem werden auch sonst alle Fehler übersprungen).
DisplayAlerts scheint ein unnützes Überbleibsel.

Sub t()
Dim ws As Worksheet, _
rErg As Range, _
strSearch As String, _
StrFirstFound As String, _
iFound As Integer
strSearch = InputBox("wonach wollen Sie suchen?", , "")
If strSearch = "" Then Exit Sub
Application.ScreenUpdating = False
If Worksheets(1).Name  "Gefunden" Then
Worksheets.Add Before:=Worksheets(1)
ActiveSheet.Name = "Gefunden"
Else
Worksheets(1).UsedRange.ClearContents
End If
For Each ws In ThisWorkbook.Worksheets
If ws.Index > 1 Then
Set rErg = ws.Range("A2:A" & Rows.Count).Find(strSearch)
If Not rErg Is Nothing Then
StrFirstFound = rErg.Address
Do
iFound = iFound + 1
rErg.EntireRow.Copy (ThisWorkbook.Worksheets(1).Cells(iFound, 1))
Set rErg = ws.Range("A2:A" & Rows.Count).FindNext(rErg)
Loop While Not rErg Is Nothing And rErg.Address  StrFirstFound
End If
End If
Next ws
End Sub
cu
Chris
Anzeige
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 14:00:16
ChrisL
Der Hinweis von Rudi passt schon...
V2:

Sub t()
Dim ws As Worksheet, _
rErg As Range, _
strSearch As String, _
StrFirstFound As String, _
iFound As Integer
strSearch = InputBox("wonach wollen Sie suchen?", , "")
If strSearch = "" Then Exit Sub
Application.ScreenUpdating = False
If Worksheets(1).Name  "Gefunden" Then
Worksheets.Add Before:=Worksheets(1)
ActiveSheet.Name = "Gefunden"
Range("A1") = "Titel"
Else
Worksheets(1).UsedRange.Offset(1, 0).ClearContents
End If
iFound = 1
For Each ws In ThisWorkbook.Worksheets
If ws.Index > 1 Then
Set rErg = ws.Range("A2:A" & Rows.Count).Find(strSearch)
If Not rErg Is Nothing Then
StrFirstFound = rErg.Address
Do
iFound = iFound + 1
rErg.EntireRow.Copy (ThisWorkbook.Worksheets(1).Cells(iFound, 1))
Set rErg = ws.Range("A2:A" & Rows.Count).FindNext(rErg)
Loop While Not rErg Is Nothing And rErg.Address  StrFirstFound
End If
End If
Next ws
End Sub

Anzeige
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 14:32:25
Dieter
Hey Chris,
Hab jetzt Deinen Code mal überarbeitet, weil der ja in A bei Dir sucht habe ich das mal in C geändert, genau so wie bei dem Kopieren.
Es scheint zu klappen.
Jetzt wo ich das sehe von Rudi habe ich auch meinen Fehler gefunden. Sorry Rudi.
Ich danke euch erst mal für die Hilfe, werde jetzt mal den Code von euch für mich erweitern und sehen ob alles so klappt.
Melde mich nochmals.
Erst mal großen Dank an alle.
Mf.
Dieter
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 14:20:53
Dieter
Hey Chris
Dein Code schein zwar schneller zu sein, aber ich muss in ab C2 suchen, und nicht in A
Und im neuen Blatt kopiert er das von Dir auch in ab A1. Soll aber in A2 anfangen zu kopieren.
Trotzdem Danke der Mühe
Gruß
Dieter
Anzeige
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 14:22:47
ChrisL
ja dann halt A wieder in C ändern:

Sub t()
Dim ws As Worksheet, _
rErg As Range, _
strSearch As String, _
StrFirstFound As String, _
iFound As Integer
strSearch = InputBox("wonach wollen Sie suchen?", , "")
If strSearch = "" Then Exit Sub
Application.ScreenUpdating = False
If Worksheets(1).Name  "Gefunden" Then
Worksheets.Add Before:=Worksheets(1)
ActiveSheet.Name = "Gefunden"
Range("A1") = "Titel"
Else
Worksheets(1).UsedRange.Offset(1, 0).ClearContents
End If
iFound = 1
For Each ws In ThisWorkbook.Worksheets
If ws.Index > 1 Then
Set rErg = ws.Range("C2:C" & Rows.Count).Find(strSearch)
If Not rErg Is Nothing Then
StrFirstFound = rErg.Address
Do
iFound = iFound + 1
rErg.EntireRow.Copy (ThisWorkbook.Worksheets(1).Cells(iFound, 1))
Set rErg = ws.Range("C2:C" & Rows.Count).FindNext(rErg)
Loop While Not rErg Is Nothing And rErg.Address  StrFirstFound
End If
End If
Next ws
End Sub

Anzeige
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 14:36:41
Dieter
Hey, Ihr seid zu schnell mit antworten,
aber wie gesagt es klappt jetzt. Ich Erweitere jetzt mal den Code mit dem Rest von mir was ich dazu noch habe.
Sehe dann genau was los ist. Melde mich nochmal dann.
Mfg.
Dieter
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 14:46:05
Dieter
Hey All,
Hab da doch noch was, könnte man das dahin noch ändern, wenn er nichts gefunden hat,
das er mir erst gar kein neues Blatt erstellt ? sondern auf dem Aktiven Blatt bleib. ?
Das wäre die Sahne auf dem Kaffee.
Gruß
Dieter
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 15:10:52
ChrisL
Hi
z.B.

Sub t()
Dim ws As Worksheet, _
rErg As Range, _
strSearch As String, _
StrFirstFound As String, _
iFound As Integer
strSearch = InputBox("wonach wollen Sie suchen?", , "")
If strSearch = "" Then Exit Sub
Application.ScreenUpdating = False
iFound = 1
For Each ws In ThisWorkbook.Worksheets
If ws.Name  "Gefunden" Then
Set rErg = ws.Range("C2:C" & Rows.Count).Find(strSearch)
If Not rErg Is Nothing Then
StrFirstFound = rErg.Address
Do
If iFound = 1 Then
If Worksheets(1).Name  "Gefunden" Then
Worksheets.Add Before:=Worksheets(1)
ActiveSheet.Name = "Gefunden"
Range("C1") = "Titel"
Else
Worksheets(1).UsedRange.Offset(1, 0).ClearContents
End If
End If
iFound = iFound + 1
rErg.EntireRow.Copy (ThisWorkbook.Worksheets(1).Cells(iFound, 1))
Set rErg = ws.Range("C2:C" & Rows.Count).FindNext(rErg)
Loop While Not rErg Is Nothing And rErg.Address  StrFirstFound
End If
End If
Next ws
End Sub
cu
Chris
Anzeige
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 17:29:18
Dieter
Hey Chris und alle anderen.
Ihr seid die besten, das läuft ja alles prima, hab jetzt den Rest von meinem Code komplett so eingefügt das es für mich sehr gut läuft.
2 Dinge habe ich raus genommen, da ich über eine Zelle im neuen Blatt eine Userform ansprechen kann womit ich dann weiter arbeite.

Range("C1") = "Titel"
Else
Worksheets(1).UsedRange.Offset(1, 0).ClearContents
End If
Der Hintergrund ist das er mir nur die Tabelle anlegt wenn gefunden. klappt ja auch.
Aber nur der Neugier, warum macht oder legt man einen Button für eine Userform an, wenn man das doch auch
sehr gut über eine Zelle machen kann ? Ich persönlich finde das klasse.
Nur die Zelle farblich ändern und mit Namen belegen und schon macht die Userform auf. Prima
nochmals vielen vielen Dank für die Hilfe.
Mfg.
Dieter
Anzeige
AW: Kopieren , in Neues Blatt einfügen
27.09.2021 19:48:38
ChrisL
Hi Dieter
Der Code passt nicht ganz zum Thema, aber ich nehme mal an, du hast das Click-Event entdeckt.
Buttons und andere Steuerelemente sind anhand des Betriebssystems standardisiert und haben darum einen hohen/schnellen Wiedererkennungswert. Weitere Standardeinstellungen wie z.B. Tab-Index können hilfreich sein. Buttons werden mit der entsprechenden Einstellung nicht mit ausgedruckt.
Persönlich bleibe ich wenn möglich/sinnvoll im Standard.
Was findest du denn am Zellen-Klick Ereignis so klasse?
cu
Chris
AW: Kopieren , in Neues Blatt einfügen
28.09.2021 00:37:00
Dieter
Hey Chris,
Ok nur mal kurz da es nicht hier in dem Chat gehört. Danke Deiner Antwort, aber wie du das schon richtig sagst habe ich das hier kennen gelernt den Click-Event.
Ich kann Dir gar nicht genau sagen warum ich das auch sehr gut find. Es liegt bestimmt daran, weil ich in einem anderen Chat gefragt habe wie ich einen
neu erstellten Button in einem neuen Datenblatt (das habe ich selber hinbekommen), aktivieren kann sobald ich darauf klicke und es sich dann eine neue
User Form aufmacht.
Danke auch nochmals an Daniel hier aus dem Forum, er hat mich dann auf die Lösung gebracht mit dem Click-Event weil sonst keine Antwort zu dem Button kam.
Ich wollte bis dahin auch nur die Lösung mit dem Button aktivieren im neuen Datenblatt. Kennst du eine Lösung dazu ?
Dann würde ich mir das auch mal ansehen und entscheiden was für mich besser ist vom Code her.
Danke nochmals Deiner Hilfe und Antwort
Gruß
Dieter
Anzeige
AW: Kopieren , in Neues Blatt einfügen
28.09.2021 09:00:14
ChrisL
Hi Dieter
Den anderen Beitrag habe ich erst jetzt gelesen bzw. überflogen:
https://www.herber.de/forum/archiv/1848to1852/1848688_Commandbutton_ansprechen.html
Daniel schreibt:
Ich würde dir empfehlen, einfach ein weiteres Blatt als Vorlage anzulegen, welches den Button und den Code enthält, und dann dieses Vorlagenblatt zu kopieren, anstatt ein neues Blatt zu erstellen.
Dieses Vorgehen würde auch ich dir empfehlen. Zumal das Blatt nicht einmal kopiert werden müsste sondern nur nach Bedarf ein-/ausgeblendet. Ausserdem willst du ja auch noch Titel (und womöglich andere Formatierungen) definieren, was sich deutlich einfacher verwirklichen und unterhalten lässt, wenn du einfach ein "Vorlageblatt" erstellst, anstelle in VBA zu programmieren.
Wenn nicht dieses Vorgehen, dann würde ich in dieser ganz speziellen Konstellation ebenfalls die Umgehungslösung mit dem DoubleClick-Event wählen. Nicht weil es benutzerfreundlicher wäre, sondern für diesen Spezialfall einfach leichter umzusetzen.
PS: Ich schlage vor, dass du mindestens einen der beiden Beiträge schliesst. Unglücklich wenn zwei Beiträge mit ähnlicher Fragestellung offen sind.
cu
Chris
Anzeige
AW: Kopieren , in Neues Blatt einfügen
28.09.2021 11:41:03
Dieter
Hey Chris und Daniel,
Danke der Antwort, Ich versuche das mal mit dem Vorlageblatt das er mir da hin alles kopiert, und er mir dann immer ein und ausblendet wenn ich es brauche.
Gut dann ist der Chat hier erledigt weil es mit dem Code prima läuft. Vielleicht bekomme ich in dem anderen Chat noch einen Code der mir das macht was ich auch gerne mal hätte. Sprich neue Tabelle anlegen mit einem CommandButton den ich dann aktivieren kann.
Danke vielmals der Ausführung und Erklärung hier von euch.
Kann geschlossen werden.
Mfg.
Dieter

37 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige