Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Werts suchen kopieren u.a. a.Stelle wieder einfüg.

Werts suchen kopieren u.a. a.Stelle wieder einfüg.
26.04.2008 15:07:25
Josef
Hallo!
Ich möchte mittels VBA in der Tabelle 1 in der Spalte G z. B. die Zahl 2180 suchen.
Wird nun diese Zahl z.B. in der Spalte G Zeile... gefunden, dann sollen in dieser Zeile die eingetragenen Werte ab der Spalte AG - AZ kopiert werden und in der nächsten freien Zelle ab der Spalte AG wieder eingefügt werden.
Wie würde hier bitte eine VBA Lösung lauten?
Danke
Josef

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Der erste Schritt
26.04.2008 15:54:37
Matthias
Hallo Josef
Kopiere diesen Code in ein allgemeines Modul

Option Explicit
Sub josef()
Dim strg As String, C As Variant
strg = "2180"
For Each C In Worksheets("Tabelle1").Range("G:G")
If C.Value = strg Then MsgBox strg & " gefunden in Zelle " & C.Address: Exit Sub
Next
End Sub


Nun hast Du die entsprechende Zelle schon mal gefunden.
Probiere es einmal mit obenstehendem Code.
Jetzt der nächsten Schritt
Du kannst mit .Offset die entsprechenden Zellen ansprechen, die in Dein Ziel eintragen werden sollen .
Zur Verdeutlichung nimm jetzt mal diesen Code (in eine Modul)


Option Explicit
Sub josef_Select()
Dim strg As String, C As Variant
strg = "2180"
For Each C In Worksheets("Tabelle1").Range("G:G")
If C.Value = strg Then MsgBox strg & " gefunden in Zelle " & C.Address: Range(C.Offset(, 26),  _
C.Offset(, 45)).Select: Exit Sub
Next
End Sub


Und statt zu Selecten kannst Du eben auch gleich kopieren (.copy)
Userbild

Anzeige
AW: Der erste Schritt
26.04.2008 16:18:00
Josef
Hallo Matthias!
Danke für Deine Antwort und Deine Hilfe.
Nach einem ersten Test.... Perfekt.
Bis zum kopieren der Zeile passt jetzt einmal alles.
Jetzt habe ich z.B. eine Menge Datensätze. Bereits komplett ausgefüllt bis zur Spalte AZ.
Jetzt kommen z.B. neue Datensätze dazu, ausgefüllt bis zur Spalte AF.
Angenommen die nächste freie Zelle in Spalte AG wäre in der Zeile 500.
Jetzt müßte ich den bereits in der Zwischenablage vorhandenen kopierten Teil mittel VBA ab der nächsten freien Zelle in der Spalte AG (das wäre in diesem Beispiel die Zelle AG500) einfügen.
wie würde hier bitte nocj eine VBA lösung lauten?
Danke
Josef

Anzeige
AW: Der erste Schritt
26.04.2008 16:56:00
Gerd
Hallo Josef!
Wie oft kann "2180" in der Spalte "G" stehen?
Falls mehrmals, soll dann der "Nebenbereich" auch mehrfach nach unten kopiert werden ?
Welche Spalte ist die "Meßlatte" für die Ermittlung der letzten Zeile mit Füllung?
Gruß Gerd

AW: Der erste Schritt
26.04.2008 17:03:00
Josef
Hallo Gerd!
Danke für Deine Antwort.
zu: Wie oft kann "2180" in der Spalte "G" stehen?
Ja. Die Zahl kann auch öfter vorkommen. Es können Zahlen zwischen 1 und derzeit 2180 mehrmals vorkommen. Ich würde daher auch eine Lösung für die Eingabe der jeweiligen Zahl suchen.
zu: Falls mehrmals, soll dann der "Nebenbereich" auch mehrfach nach unten kopiert werden ?
Nein, wenn die Zahl einmal gefunden wurde, dann soll die Zeile auch nur einmal eingetragen werden.
zu: Welche Spalte ist die "Meßlatte" für die Ermittlung der letzten Zeile mit Füllung?
Die Spalte AG.
Josef

Anzeige
AW: Der erste Schritt
26.04.2008 17:08:48
Gerd
Hallo Josef,
nochmals: Wenn die Zahl zweimal vorhanden ist, soll dann nur einmal oder zweimal
nach unten kopiert werden?
Und: Würde es genügen, die Werte zu übertragen oder sollen es alle Zelleneigenschaften sein ?
Gruß Gerd

AW: Der erste Schritt
26.04.2008 17:16:00
Josef
Hallo Gerd!
Die Lösung mit der Eingabe der Zahl habe ich bereits gefunden mit einer Inputbox.
Option Explicit

Sub josef_Select()
Dim strg As String, C As Variant
Dim Zahl As Integer
Zahl = InputBox("Bitte geben Sie die gesuchte Zahl ein!", "Frage", 1)
For Each C In Worksheets("Tabelle1").Range("G:G")
If C.Value = Zahl Then MsgBox Zahl & " gefunden in Zelle " & C.Address: Range(C.Offset(, 26),  _
_
C.Offset(, 45)).Copy: Exit Sub
Next
End Sub


Jetzt zu Deiner Frage.
Wenn die Zahl zweimal vorhanden ist, soll dann nur einmal oder zweimal nach unten kopiert werden?
nur einmal
Und: Würde es genügen, die Werte zu übertragen oder sollen es alle Zelleneigenschaften sein ?
Die Zellen die kopiert werden sind im Textformat, da es dreistellige Zahlen mit führenden 0 gibt,(000, 030 usw.)
Josef

Anzeige
Der nächste Schritt ...
26.04.2008 20:20:00
Matthias
Hallo
Bin nun auch wieder da.
Sollte es sich dabei um die letzte Zeile der Tabelle handeln(müßte das noch abgefragt werden
und gegebenenfalls eine Fehlerroutine mit rein.
Da .End(xlUp).Row + 1bei der letzten Zeile zu enem Fehler führen würde.
Aber meist nutzt amn diesen Zellbereich nicht.
Sollte also die letzte Zeile in Spalte "AG" gefüllt sein, melde Dich nochmal (wg. Fehler abfangen)

Sub josef_InPutbox()
Dim strg As String, C As Variant, LoLetzte As Long
LoLetzte = Cells(Rows.Count, "AG").End(xlUp).Row + 1 'letzte Zelle ermitteln
MsgBox "Zelle zum Kopieren = " & LoLetzte
Dim Zahl As Integer
Zahl = InputBox("Bitte geben Sie die gesuchte Zahl ein!", "Frage", 1)
For Each C In Worksheets("Tabelle1").Range("G:G")
If C.Value = Zahl Then
Range(C.Offset(, 26), C.Offset(, 45)).Copy
Range("AG" & LoLetzte).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False,  _
Transpose:=False
Application.CutCopyMode = False
Exit Sub
End If
Next
End Sub


einen schönen Abend noch ...
Gruß Matthias

Anzeige
AW: Der nächste Schritt ...
26.04.2008 21:02:00
Josef
Hallo Matthias!
Danke für Deine Antwort!
Habe den Code gerade getestet.
Das würde passen.
Wie müßte ich den Code jetzt noch ändern, damit ich statt
MsgBox "Zelle zum Kopieren = 7
MsgBox Zahl & " gefunden in Zelle G7
stehen habe.
Josef

so gehts ...
26.04.2008 21:12:00
Matthias
Hallo Josef

Sub josef_InPutbox()
Dim strg As String, C As Variant, LoLetzte As Long, Zahl As Integer
LoLetzte = Cells(Rows.Count, "AG").End(xlUp).Row + 1 'letzte Zelle ermitteln
MsgBox "Zelle zum Einfügen = AG" & LoLetzte
Zahl = InputBox("Bitte geben Sie die gesuchte Zahl ein!", "Frage", 1)
For Each C In Worksheets("Tabelle1").Range("G:G")
If C.Value = Zahl Then
MsgBox Zahl & " gefunden in Zelle " & C.Address
Range(C.Offset(, 26), C.Offset(, 45)).Copy
Range("AG" & LoLetzte).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, _
Transpose:=False
Application.CutCopyMode = False
Exit Sub
End If
Next
End Sub


Userbild

Anzeige
Dim gehört natürlich an den Anfang der SUB
26.04.2008 20:47:56
Matthias
Hallo
kleine Korrektur

Sub josef_InPutbox()
Dim strg As String, C As Variant, LoLetzte As Long, Zahl As Integer
LoLetzte = Cells(Rows.Count, "AG").End(xlUp).Row + 1 'letzte Zelle ermitteln
MsgBox "Zelle zum Einfügen = AG" & LoLetzte
Zahl = InputBox("Bitte geben Sie die gesuchte Zahl ein!", "Frage", 1)
For Each C In Worksheets("Tabelle1").Range("G:G")
If C.Value = Zahl Then
Range(C.Offset(, 26), C.Offset(, 45)).Copy
Range("AG" & LoLetzte).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, _
Transpose:=False
Application.CutCopyMode = False
Exit Sub
End If
Next
End Sub


Userbild

Anzeige
AW: Dim gehört natürlich an den Anfang der SUB
26.04.2008 21:15:00
Josef
Hallo Matthias!
Herzlichen Dank für Deine Mühe und Deine Hilfe.
Hat mir sehr geholfen.
Ich wünsche Dir noch eine angenehmes Wochenende.
Josef

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige