Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
520to524
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
520to524
520to524
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Weihnachtsgeschenk

Weihnachtsgeschenk
23.11.2004 20:17:11
Saale
Hallo zusammen,
ich mache gerade die ersten Schritte mit VBA.
Ich habe leider kein gutes Nachschlagewerk um mir die Grundkenntnisse anzueigenen, da ich gerade ein Praktikum in den USA absolviere.
Ich habe eine grosse Tabelle aus der ich bestimmte Zellen in eine andere kopieren moechte. Die Tabelle wird aus SAP gezogen und hat somit immer den gleichen Aufbau.
Das Makro soll Spalte Q durchlaufen und immer wenn "to 0" auftaucht, soll es von dieser Zelle ausgehend, eine nach rechts und zwei nach unten ruecken. Diesen Wert dann kopieren und in ein anderes sheet (Tabelle2)einfuegen. Dieser Vorgang soll solange durchlaufen werden, bis alle "to 0" abgearbeitet wurden und somit alle zu dieser Zelle bezogenen Werte in der Tabelle2 aufgelistet wurden.
Ich hab da mal wild was zusammengeschrieben, aber bis das funktioniert ist Weihnachten. Ich hoffe jemand kann mir helfen! Sozusagen als verfruehtes Weihnachtsgeschenk!

Sub Auswertung()
Dim l As Integer
Dim i As Integer
Sheets("Tabelle1").Activate
Range("Q:Q").Select
Range("Q65536").End(xlUp).Offset(1, 0).Select
l = Selection.Count
For i = 1 To l
If ActiveCell.Value = "to" Then
ActiveCell.Offset(2, 1).Activate
Selection.Copy
Sheets("Tabelle2").Activate
Range("C1").Select
Selection.PasteSpecial Paste:=xlValues
ActiveCell.Offset(1, 0).Select
Next
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Weihnachtsgeschenk
23.11.2004 21:00:11
Roland
Hallo Saale,
versuch das mal:

Sub VorWeihnachten()
Dim rng As Range, i As Long
i = 1
For Each rng In Sheets("Tabelle1").Range("Q:Q")
If rng Like "to 0" Then
Sheets("Tabelle2").Range("C" & i) = rng.Offset(2, 1)
i = i + 1
End If
Next
End Sub

Gruß Roland
AW: Weihnachtsgeschenk
23.11.2004 21:01:27
Josef
Hallo Saale!
Ungetestet, aber sollte funken.

Sub Auswertung()
Dim wksQ As Worksheet   'Quelle
Dim wksZ As Worksheet   'Ziel
Dim rng As Range
Dim sFirst As String
Dim lRow As Long
Set wksQ = Sheets("Tabelle1")
Set wksZ = Sheets("Tabelle2")
lRow = 1
Set rng = wksQ.Range("Q:Q").Find(What:="to", LookIn:=xlValues, _
LookAt:=xlWhole, After:=wksQ.Range("Q65536"))
If Not rng Is Nothing Then
sFirst = rng.Address
rng.Offset(2, 1).Copy wksZ.Cells(lRow, 3)
lRow = lRow + 1
Do
Set rng = wksQ.Range("Q:Q").FindNext(After:=rng)
If rng.Address = sFirst Then Exit Do
rng.Offset(2, 1).Copy wksZ.Cells(lRow, 3)
lRow = lRow + 1
Loop
End If
End Sub

Gruß Sepp
Anzeige
AW: Weihnachtsgeschenk
23.11.2004 21:36:18
Saale
Hallo Sepp,
Danke fuer Deine Hilfe!
Da seh ich wieder mal, dass ich nichts kann!!!
Aber trotzdem funkt Dein Makro nicht, liegt es vielleicht daran dass ich hier ne amerikanische Version hab, ist auch 6.0 nicht 9.0, sorry. Aber daran kann es denke ich nicht liegen...
Warum setzt Du denn Set wksQ = Sheets("Tabelle1") und Set wksZ = Sheets("Tabelle2")?
Meine Quelle ist Tabelle1, Spalte Q und mein Ziel ist Tabelle2, Spalte C ...
Wenn ich Dein Programm so durchgehe, sieht daseigentlich alles logisch aus, es muesste eigentlich funktionieren, aber es tut's halt nicht...
Trotzdem nochmal Danke fuer das Weihnachtsgeschenk!!!
Let it rip!
Saale
Anzeige
AW: Weihnachtsgeschenk
23.11.2004 21:53:41
Josef
Hallo Saale!
Schreib mal statt
What:="to"
What:="to 0"
und statt
LookAt:=xlWhole
LookAt:=xlPart
Zu wksQ bzw. wksZ
wksQ = Quell-Tabelle
wksZ = Ziel-Tabelle
und hat nichts mit der Suchspalte "Q" zu tun!
Gruß Sepp
AW: Weihnachtsgeschenk
23.11.2004 22:17:13
Saale
Hallo Sepp,
Alles klar es geht!!! :-)
Ich hab die genaue Anzahl an Leerstellen angegeben, also "to#######0" und dann gings.
Also schreibst Du wksQ bzw. wksZ nur um dir spaeter Schreibarbeit zu ersparen, oder?
Ok, jetzt muss ich das nurnoch auf ca weitere 20 Spalten anwenden und dann hab ichs!
Danke Danke Danke
@ Roland
Hallo,
Dir danke ich natuerlich auch.
Hab Dein Makro noch a bissel veraendert und dann gings es auch! :-)
Es hat bloss den ersten zu kopierenden Wert aus Spalte Q nicht in Tabelle2 eingefuegt!
Woran koennte das liegen?

Sub VorWeihnachten()
Dim rng As Range, i As Long
i = 1
For Each rng In Sheets("Tabelle1").Range("Q:Q")
If rng Like "To       0" Then
ActiveCell.Offset(2, 1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Range("C1").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Sheets("Tabelle2").Range("C" & i) = rng.Offset(2, 1)
i = i + 1
End If
Next
End Sub

Trotzdem vielen Dank!
Saale
Anzeige
AW: Weihnachtsgeschenk
24.11.2004 10:17:19
Roland
. . . Es hat bloss den ersten zu kopierenden Wert aus Spalte Q nicht in Tabelle2 eingefuegt!
Woran koennte das liegen?
Das liegt daran, dass ein Teil deiner Ergänzungen schlicht überflüssig ist. Der Teil
ActiveCell.Offset(2, 1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Range("C1").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
macht nichts anderes als das hier:
Sheets("Tabelle2").Range("C" & i) = rng.Offset(2, 1).
Ich ziehe die letzte Schreibweise vor, da sie kürzer ist und auf Select bzw. Activate verzichtet.
Wenn du die richtige Anzahl der Leerstellen bei "To 0" einsetzt, funktioniert das Makro richtig.
Gruß Roland
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige