PDA

Vollständige Version anzeigen : Bestimmte Zellen aus Zeilen anwählen


peterberns
11.07.2012, 12:44
Guten Tag

Ich arbeite mich gerade in VBA ein un brauche ein wenig Unterstützung.

Ich habe 2 Arbeitsblätter.
In dem ersten Arbeitsblatt befinden sich in den Spalten W,X,Y "Zeiten".
Ich möchte die Zeiten aus bestimmten Zeilen kopieren.
Dazu habe ich ein Makro, welches mir die gewünschten Zeilen sucht:

Sub Taktzeiten_uebertragen()
Dim i As Long, j As Long, prozesskalkulation As Worksheet, bolFound As Boolean

j = 170 'startzeile in zielmappe
bolFound = False
Set prozesskalkulation = ActiveSheet.Next ' Ziel ist die nächste Tabelle (rechts)

For i = 1 To 2000 'suchen inn zeile 1 bis 2000

If Cells(i, 3).Value = "st1" Then 'sucht in spalte 2 (also A) nach st1 (station1)

bolFound = True 'st1 wurde gefunden

If bolFound Then 'wenn st1 gefunden wurde
Rows(i).Copy Destination:=prozesskalkulation.Rows(j) 'dann in die prozesskalkulation verschieben
j = j + 1
Else: MsgBox ("Station1 nicht gefunden!") 'falls nicht gefunden=Fehlermeldung

End If
bolFound = False

End If


Next i
End Sub

Frage: Wie bekomme ich es hin, dass nicht die kompletten Zeilen in die zweite Arbeitsmappe(prozesskalkulation) verschoben werden, sondern nur die 3 Zellen aus der Zeile (der Spalten W,X,Y)

Sorry, für die blöde Frage
Danke im Voraus!!

Gruß
peter

IngGi
11.07.2012, 13:12
Hallo Peter,

folgendes müsste funktionieren:

<blockquote><div style='background-color: #F2F2FF; border: 1px solid #3300B2; padding: 0px 24px;'><pre style='font-size: 12px; padding: 0px 10px;'><span style="color: #0000FF">Sub</span> Taktzeiten_uebertragen<span style='color: #B200CC;'>(</span><span style='color: #B200CC;'>)</span><br><br><span style="color: #0000FF">Dim</span> loZeileQuelle <span style="color: #0000FF">As</span> <span style="color: #0000FF">Long</span><br><span style="color: #0000FF">Dim</span> loZeileZiel <span style="color: #0000FF">As</span> <span style="color: #0000FF">Long</span><br><span style="color: #0000FF">Dim</span> wsProzesskalkulation <span style="color: #0000FF">As</span> Worksheet<br><br><br>loZeileZiel =<span style="color: #FF0000"> 170</span><br><span style="color: #0000FF">For</span> loZeileQuelle =<span style="color: #FF0000"> 1</span> <span style="color: #0000FF">To</span><span style="color: #FF0000"> 2000</span><br> <span style="color: #0000FF">If</span> Cells<span style='color: #B200CC;'>(</span>loZeileQuelle,<span style="color: #FF0000"> 3</span><span style='color: #B200CC;'>)</span> = <span style='color: #CC9900;'>"st1"</span> <span style="color: #0000FF">Then</span><br> <span style="color: #0000FF">With</span> wsProzesskalkulation<br> Range<span style='color: #B200CC;'>(</span>Cells<span style='color: #B200CC;'>(</span>loZeileQuelle, <span style='color: #CC9900;'>"W"</span><span style='color: #B200CC;'>)</span>, Cells<span style='color: #B200CC;'>(</span>loZeileQuelle, <span style='color: #CC9900;'>"Y"</span><span style='color: #B200CC;'>)</span><span style='color: #B200CC;'>)</span>.Copy _<br> Destination:=.Range<span style='color: #B200CC;'>(</span>.Cells<span style='color: #B200CC;'>(</span>loZeileZiel, <span style='color: #CC9900;'>"W"</span><span style='color: #B200CC;'>)</span>, .Cells<span style='color: #B200CC;'>(</span>loZeileZiel, <span style='color: #CC9900;'>"Y"</span><span style='color: #B200CC;'>)</span><span style='color: #B200CC;'>)</span><br> <span style="color: #0000FF">End </span><span style="color: #0000FF">With</span><br> loZeileZiel = loZeileZiel +<span style="color: #FF0000"> 1</span><br> <span style="color: #0000FF">Else</span><br> MsgBox <span style='color: #CC9900;'>"Station1 nicht gefunden!"</span><br> <span style="color: #0000FF">End </span><span style="color: #0000FF">If</span> <span style='color: #008000;'>'Cells(loZeileQuelle, 3) = "st1"<br></span><span style="color: #0000FF">Next</span> <span style='color: #008000;'>'loZeileQuelle = 1 To 2000<br></span><br><span style="color: #0000FF">End </span><span style="color: #0000FF">Sub</span><br></pre><hr style='color: #3300B2; background: #3300B2; height: 1px;'><p style='font-size: 8px; font-family: Verdana; text-align: right;'>VBA/HTML - CodeConverter für Excelforen<br>AddIn für Excel XP+2003 - komplett in VBA geschrieben von IngGi<br>Anbindung an VBE-Kontextmenü geklaut ;-) bei: <a href='http://www.cpearson.com/excel/VbeMenus.aspx'>http://www.cpearson.com/excel/VbeMenus.aspx</a></p></div></blockquote>

Gruß Ingolf

peterberns
11.07.2012, 13:34
Danke InGi für die schnelle Antwort:)

Leider verstehe ich nicht alles und es funktioniert auch nicht.
Fehler: "objektvariable oder with-blockvariable nicht festgelegt"
st1 wird nicht gefunden.
Könnest du hinter dem code schreiben, wo was passiert?
Würd mich sehr freuen:)

Danke
Gruß

Peter

IngGi
11.07.2012, 13:51
Hallo Peter,

wahrscheinlich sucht er in der falschen Spalte (Spalte C). Die diesbezüglichen Angaben in deinem Code sind widersprüchlich:

If Cells(i, 3).Value = "st1" Then 'sucht in spalte 2 (also A) nach st1 (station1)

Hier sucht er tatsächlich in Spalte 3 (= C), im Kommentar ist aber Spalte 2 angegeben, was zudem auch noch als Spalte A bezeichnet wird. Da hast du wohl mehrfach korrigiert und dabei nicht immer alles relevante mitkorrigiert.

Hier nochmal mein Code mit Kommentaren:

<blockquote><div style='background-color: #F2F2FF; border: 1px solid #3300B2; padding: 0px 24px;'><pre style='font-size: 12px; padding: 0px 10px;'><span style="color: #0000FF">Sub</span> Taktzeiten_uebertragen<span style='color: #B200CC;'>(</span><span style='color: #B200CC;'>)</span><br><br><span style="color: #0000FF">Dim</span> loZeileQuelle <span style="color: #0000FF">As</span> <span style="color: #0000FF">Long</span> <span style='color: #008000;'>'Zeile im Quelltabellenblatt<br></span><span style="color: #0000FF">Dim</span> loZeileZiel <span style="color: #0000FF">As</span> <span style="color: #0000FF">Long</span> <span style='color: #008000;'>'Zeile im Zieltabellenblatt<br></span><span style="color: #0000FF">Dim</span> wsProzesskalkulation <span style="color: #0000FF">As</span> Worksheet <span style='color: #008000;'>'Zieltabellenblatt<br></span><br><br>loZeileZiel =<span style="color: #FF0000"> 170</span> <span style='color: #008000;'>'erste Zeile im Zieltabellenblatt<br></span><span style="color: #0000FF">For</span> loZeileQuelle =<span style="color: #FF0000"> 1</span> <span style="color: #0000FF">To</span><span style="color: #FF0000"> 2000</span> <span style='color: #008000;'>'zu durchsuchende Zeilen im Quelltabellenblatt<br></span> <span style='color: #008000;'>'Wenn "st1" in Spalte C der betreffenden Zeile gefunden, ...<br></span> <span style="color: #0000FF">If</span> Cells<span style='color: #B200CC;'>(</span>loZeileQuelle,<span style="color: #FF0000"> 3</span><span style='color: #B200CC;'>)</span> = <span style='color: #CC9900;'>"st1"</span> <span style="color: #0000FF">Then</span><br> <span style='color: #008000;'>'With-Anweisung, siehe z.B. unter<br></span> <span style='color: #008000;'>'http://www.herber.de/mailing/vb/html/vastmwith.htm<br></span> <span style="color: #0000FF">With</span> wsProzesskalkulation<br> <span style='color: #008000;'>'Spalten W bis Y in aktueller Zeile kopieren<br></span> <span style='color: #008000;'>'und in denselben Spalten des Zieltabellenblattes einfügen<br></span> Range<span style='color: #B200CC;'>(</span>Cells<span style='color: #B200CC;'>(</span>loZeileQuelle, <span style='color: #CC9900;'>"W"</span><span style='color: #B200CC;'>)</span>, Cells<span style='color: #B200CC;'>(</span>loZeileQuelle, <span style='color: #CC9900;'>"Y"</span><span style='color: #B200CC;'>)</span><span style='color: #B200CC;'>)</span>.Copy _<br> Destination:=.Range<span style='color: #B200CC;'>(</span>.Cells<span style='color: #B200CC;'>(</span>loZeileZiel, <span style='color: #CC9900;'>"W"</span><span style='color: #B200CC;'>)</span>, .Cells<span style='color: #B200CC;'>(</span>loZeileZiel, <span style='color: #CC9900;'>"Y"</span><span style='color: #B200CC;'>)</span><span style='color: #B200CC;'>)</span><br> <span style="color: #0000FF">End </span><span style="color: #0000FF">With</span><br> <span style='color: #008000;'>'Zeile in Zieltabellenblatt inkrementieren<br></span> loZeileZiel = loZeileZiel +<span style="color: #FF0000"> 1</span><br> <span style="color: #0000FF">Else</span><br> <span style='color: #008000;'>'Fehlermeldung, wenn nicht gefunden<br></span> MsgBox <span style='color: #CC9900;'>"Station1 nicht gefunden!"</span><br> <span style="color: #0000FF">End </span><span style="color: #0000FF">If</span> <span style='color: #008000;'>'Cells(loZeileQuelle, 3) = "st1"<br></span><span style="color: #0000FF">Next</span> <span style='color: #008000;'>'loZeileQuelle = 1 To 2000<br></span><br><span style="color: #0000FF">End </span><span style="color: #0000FF">Sub</span><br></pre><hr style='color: #3300B2; background: #3300B2; height: 1px;'><p style='font-size: 8px; font-family: Verdana; text-align: right;'>VBA/HTML - CodeConverter für Excelforen<br>AddIn für Excel XP+2003 - komplett in VBA geschrieben von IngGi<br>Anbindung an VBE-Kontextmenü geklaut ;-) bei: <a href='http://www.cpearson.com/excel/VbeMenus.aspx'>http://www.cpearson.com/excel/VbeMenus.aspx</a></p></div></blockquote>

Gruß Ingolf

IngGi
11.07.2012, 13:56
Hallo Peter,

gerade habe ich dein Edit in #3 gesehen. In meinem Code habe ich völlig vergessen, die Variable wsProzesskalkulation zu initiieren. Hier nochmal der korrigierte Code:

<blockquote><div style='background-color: #F2F2FF; border: 1px solid #3300B2; padding: 0px 24px;'><pre style='font-size: 12px; padding: 0px 10px;'><span style="color: #0000FF">Sub</span> Taktzeiten_uebertragen<span style='color: #B200CC;'>(</span><span style='color: #B200CC;'>)</span><br><br><span style="color: #0000FF">Dim</span> loZeileQuelle <span style="color: #0000FF">As</span> <span style="color: #0000FF">Long</span> <span style='color: #008000;'>'Zeile im Quelltabellenblatt<br></span><span style="color: #0000FF">Dim</span> loZeileZiel <span style="color: #0000FF">As</span> <span style="color: #0000FF">Long</span> <span style='color: #008000;'>'Zeile im Zieltabellenblatt<br></span><span style="color: #0000FF">Dim</span> wsProzesskalkulation <span style="color: #0000FF">As</span> Worksheet <span style='color: #008000;'>'Zieltabellenblatt<br></span><br><br><span style='color: #008000;'>'Das auf das aktive Tabellenblatt folgende Tabellenblatt<br></span><span style='color: #008000;'>'in Variable übernehmen<br></span><span style="color: #0000FF">Set</span> wsProzesskalkulation = Worksheets<span style='color: #B200CC;'>(</span>ActiveSheet.Index +<span style="color: #FF0000"> 1</span><span style='color: #B200CC;'>)</span><br>loZeileZiel =<span style="color: #FF0000"> 170</span> <span style='color: #008000;'>'erste Zeile im Zieltabellenblatt<br></span><span style="color: #0000FF">For</span> loZeileQuelle =<span style="color: #FF0000"> 1</span> <span style="color: #0000FF">To</span><span style="color: #FF0000"> 2000</span> <span style='color: #008000;'>'zu durchsuchende Zeilen im Quelltabellenblatt<br></span> <span style='color: #008000;'>'Wenn "st1" in Spalte C der betreffenden Zeile gefunden, ...<br></span> <span style="color: #0000FF">If</span> Cells<span style='color: #B200CC;'>(</span>loZeileQuelle,<span style="color: #FF0000"> 3</span><span style='color: #B200CC;'>)</span> = <span style='color: #CC9900;'>"st1"</span> <span style="color: #0000FF">Then</span><br> <span style='color: #008000;'>'With-Anweisung, siehe z.B. unter<br></span> <span style='color: #008000;'>'http://www.herber.de/mailing/vb/html/vastmwith.htm<br></span> <span style="color: #0000FF">With</span> wsProzesskalkulation<br> <span style='color: #008000;'>'Spalten W bis Y in aktueller Zeile kopieren<br></span> <span style='color: #008000;'>'und in denselben Spalten des Zieltabellenblattes einfügen<br></span> Range<span style='color: #B200CC;'>(</span>Cells<span style='color: #B200CC;'>(</span>loZeileQuelle, <span style='color: #CC9900;'>"W"</span><span style='color: #B200CC;'>)</span>, Cells<span style='color: #B200CC;'>(</span>loZeileQuelle, <span style='color: #CC9900;'>"Y"</span><span style='color: #B200CC;'>)</span><span style='color: #B200CC;'>)</span>.Copy _<br> Destination:=.Range<span style='color: #B200CC;'>(</span>.Cells<span style='color: #B200CC;'>(</span>loZeileZiel, <span style='color: #CC9900;'>"W"</span><span style='color: #B200CC;'>)</span>, .Cells<span style='color: #B200CC;'>(</span>loZeileZiel, <span style='color: #CC9900;'>"Y"</span><span style='color: #B200CC;'>)</span><span style='color: #B200CC;'>)</span><br> <span style="color: #0000FF">End </span><span style="color: #0000FF">With</span><br> <span style='color: #008000;'>'Zeile in Zieltabellenblatt inkrementieren<br></span> loZeileZiel = loZeileZiel +<span style="color: #FF0000"> 1</span><br> <span style="color: #0000FF">Else</span><br> <span style='color: #008000;'>'Fehlermeldung, wenn nicht gefunden<br></span> MsgBox <span style='color: #CC9900;'>"Station1 nicht gefunden!"</span><br> <span style="color: #0000FF">End </span><span style="color: #0000FF">If</span> <span style='color: #008000;'>'Cells(loZeileQuelle, 3) = "st1"<br></span><span style="color: #0000FF">Next</span> <span style='color: #008000;'>'loZeileQuelle = 1 To 2000<br></span><br><span style="color: #0000FF">End </span><span style="color: #0000FF">Sub</span><br></pre><hr style='color: #3300B2; background: #3300B2; height: 1px;'><p style='font-size: 8px; font-family: Verdana; text-align: right;'>VBA/HTML - CodeConverter für Excelforen<br>AddIn für Excel XP+2003 - komplett in VBA geschrieben von IngGi<br>Anbindung an VBE-Kontextmenü geklaut ;-) bei: <a href='http://www.cpearson.com/excel/VbeMenus.aspx'>http://www.cpearson.com/excel/VbeMenus.aspx</a></p></div></blockquote>

Gruß Ingolf

peterberns
13.07.2012, 19:37
Vielen Dank!
Es hat geklappt:)
Jetzt müsste ich es nur noch hin bekommen, dass die Werte auch im Zieltabellenblatt in bestimmte Zellen eingefügt werden. Das bekomme ich leider nicht hin:(

Gruß
Peter