Like Tree1Danke
  • 1 Beitrag von Yaslaw
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
1562
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.532
    Hai,

    folgendes Makro :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    Sub aaa()
     
     
    Dim Zelle As Range
     
        
         For Each Zelle In Workbooks("VBA SLI.XLS").Worksheets("SLI").Range("F4", "F" & Range("a65536").End(xlUp).Row)
         
            If Zelle = "XYZ" Then
         
                Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv").Rows(6).Insert
                Zelle.EntireRow.Copy Destination:=Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv").Range("A6")
        
            Else
            
                b = b + 1
            
            End If
         
         Next Zelle
     
    End Sub

    Funktioniert :
    - wenn ich ihn aus dem Editor starte (Ausführen - Sub ausführen ...)
    - wenn ich Einzelschritte durchführe (F8)

    Funktioniert nicht :
    -wenn ich aus der Datei VBA SLI heraus starte. Dann wird nach der ersten gefundenen Stelle, incl. Kopie, ohne Fehelrmeldung aufgehört.

    Was habe ich falsch gemacht ?

    Ciao Stefan
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  2. #2
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    item: Aus welcher Datei fühsrt du das mit F8 aus?

    item: Wie willst du es aus VBA SLI ausführen? Mit einem Button? Mit F8?

    item: Es empfiehlt sich der Übersicht zuliebe die 2 Worksheets als Objekte zu defineren. Macht den Code lesbarer

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    Sub aaa()
      
    Dim Zelle As Range
    Dim wsSli AS Worksheet
    Dim wsArchiv As Worksheet
     
         'Objekte setzen
         Set wsSli = Workbooks("VBA SLI.XLS").Worksheets("SLI")
         Set wsArchiv = Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv") 
        
         For Each Zelle In wsSli.Range("F4", "F" & Range("a65536").End(xlUp).Row)
              If Zelle = "XYZ" Then
                   wsArchiv.Rows(6).Insert
                   Zelle.EntireRow.Copy Destination:=wsArchiv.Range("A6")
              Else        
                   b = b + 1        
              End If     
         Next Zelle
     
         ' Objekte brav wieder aufräumen
         Set Zelle = Nothing
         Set wsSli = nothing
         Set wsArchiv = Nothing
     
    End Sub
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  3. #3
    Zvoni ist offline Mitglied Smaragd
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    1.031
    Ich bin mir jetzt nicht sicher, aber müssen Arbeitsmappen zur Laufzeit nicht per Workbooks.Open hinzugefügt werden?

    Also in der Art von
    Code vb:
    1
    2
    3
    
    Set wbArchiv=Workbooks.Open("VBA SLI Aufgabe.XLS")
    Set wsArchiv=wbArchiv("Archiv")
    'blablbalba

    Wie gesagt, bin mir nicht sicher, da die Schreibweise
    Code vb:
    1
    
    Set wsArchiv = Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv")
    eigentlich den Zugriff auf ein Element der Workbooks-Auflistung beschreibt, welches vorher der Auflistung per Open hinzugefügt werden muss.

    P.S.: Wozu soll das b=b+1 gut sein?
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  4. #4
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    Das open() ist glaub nur, wenn sie noch nicht offen sind. Ich geh eigentlich davon aus, dass dies bereits der Fall ist - wenn nicht, dann gibts hoffentlich ein Fehler.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  5. #5
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.532
    Hai,

    item: Aus welcher Datei fühsrt du das mit F8 aus?
    VBA SLI Aufgabe.XLS

    item: Wie willst du es aus VBA SLI ausführen? Mit einem Button? Mit F8?
    Gar nicht, bzw. ich verstehe die Frage nicht. (?)


    item: Es empfiehlt sich der Übersicht zuliebe die 2 Worksheets als Objekte zu defineren. Macht den Code lesbarer
    Okay.


    Beide Dateien sind auf. In "Schritt 2" sollen die Daten aus der geschlossenen Datei in VBA SLI Aufgaben.XLS kopiert werden.

    EIn Button ist noch nicht erstellt.
    Ziel ist es aus verschiedenen Projekt-Protokolldateien, die entsprechenden Dateinsätze, die wo mein Name drin steht, in eine "Übersichtsdatei" zu kopieren.

    Danke schon mal.

    Ciao Stefan
    Geändert von Yaslaw (23.01.12 um 15:03 Uhr) Grund: Zitat als Zitat markiert - ist sonst sehr unübersichtlich
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  6. #6
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    Zum 2ten Punkt, den du nicht verstehst zitiere ich dich mal
    Funktioniert nicht :
    -wenn ich aus der Datei VBA SLI heraus starte. Dann wird nach der ersten gefundenen Stelle, incl. Kopie, ohne Fehelrmeldung aufgehört.
    darum meine Frage
    item: Wie willst du es aus VBA SLI ausführen? Mit einem Button? Mit F8?
    Aber du beschreibst jetzt in das Problem selber
    In "Schritt 2" sollen die Daten aus der geschlossenen Datei in VBA SLI Aufgaben.XLS kopiert werden.
    Natürlich muss die Datei zuerst geöffnet werden. Zvoni hat beschrieben wie das geht.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  7. #7
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.532
    Hai,

    irgendwie ist heute ncht mein Tag.

    Beide Dateien sind geöffnet, ich bin in VBA SLI Aufgabe.XLS, starte das Makro und die Daten aus VBA SLI werden kopiert.

    Von Hand (F8 im Editor, Einzelschritte) funktioniert es, Makro Start im Editor funktioniert, bei Start des Makros in VBA SLI.XLS wird nur ein Datensatz kopiert.

    Irgendwann einmal, wenn ich ein wenig mehr kann, soll das Ganze laufen ohne die VBA SLI zu öffnen.

    Ich hoffe jetzt habe ich mich verständlich ausgedrückt.

    Ciao Stefan
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  8. #8
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    Jepp hast du. Ich anscheinend nicht.

    Wenn das VBA SLI noch nicht offen ist, dann musst du es per VBA zuerst öffnen. Ansonsten findet es Excel nicht.
    Workbooks("VBA SLI.XLS") greift auf ein offenes Worbook zu. Ergo musst du mit Set wsSli = Workbooks.Open("C:\temp\VBA SLI.XLS") drauf zugreiffen

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Dim wbSli As Workbook
    Dim wsSli AS Worksheet
    Dim wsArchiv As Worksheet
     
         'Objekte setzen
         Set wbSli = Workbooks.open("C:\Temp\VBA SLI.XLS")  'Oder wo das DDIng auch immer steckt
         Set wsSli = wbSli.Worksheets("SLI")
         Set wsArchiv = Workbooks("VBA SLI Aufgabe.XLS").Worksheets("Archiv") 
    ...
         Call wbSli.close
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  9. #9
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.532
    Hai,

    Nachtrag :

    Das Problem bleibt. Starte ich das Makro von VBA SLI Aufgabe.XLS wird nach dem ersten kopierten Datensatz aufgehört.

    Starte ich von VBA SLI funktioniert es.

    In beiden Fällen keine Fehlermeldung.

    Langsam verstehe ich nur Bahnhof.

    Ciao Stefan
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  10. #10
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    Zeig mal dein aktueller Code.

    Schon mal mit debug nachgeschaut was passiert?

    Nachtrag im for each solltest du beim 2ten Range das Worksheet angeben, sonst nimmt er dort das aktuelle
    Code vb:
    1
    
    wsSli.Range("a65536").End(xlUp).Row
    Leola13 bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  11. #11
    Zvoni ist offline Mitglied Smaragd
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    1.031
    Quizfrage: In welcher der beiden Arbeitsmappen ist das Makro eigentlich drin?
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  12. #12
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.532
    Hai,

    BINGO !

    Das wars. Klappt tadellos. Danke.

    Ciao Stefan
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  13. #13
    Zvoni ist offline Mitglied Smaragd
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    1.031
    Was wars denn jetzt?

    Und falls erledigt, bitte Beitrag auch als erledigt markieren.
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  14. #14
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    Zitat Zitat von Yaslaw Beitrag anzeigen
    Nachtrag im for each solltest du beim 2ten Range das Worksheet angeben, sonst nimmt er dort das aktuelle
    Code vb:
    1
    
    wsSli.Range("a65536").End(xlUp).Row
    Das war es. Ist im Nachhinein auch logisch.

    Hab das mit dem erledigt mal übernommen
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  15. #15
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.532
    Hai,

    Yaslaw hat Recht.

    @Zvoni : Dein Beitrag kam während ich getippt habe.

    Ciao Stefan

    PS : Beitrag erledigt. Da ich zur Zeit keinen Internetanschluß habe, kann ich nur sporadisch (heimlich) auf der Arbeit ins Web.
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

Thema nicht erledigt

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 06.04.10, 13:27
  2. Benötige einfaches Makro für EXCEL 2003
    Von Gunnii im Forum Office-Anwendungen
    Antworten: 15
    Letzter Beitrag: 22.07.09, 19:04
  3. Excel 97 VB Makro hat Laufzeitfehler unter Excel 2003
    Von V&M im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 23.07.08, 11:16
  4. Antworten: 1
    Letzter Beitrag: 18.07.08, 13:46
  5. Excel 2007 + Makro + rauschreiben als Excel 1997 - 2003
    Von Herli im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 10.08.07, 11:09