Thema Datum  Von Nutzer Rating
Antwort
21.03.2019 20:05:18 thomas
NotSolved
21.03.2019 21:52:48 Werner
NotSolved
22.03.2019 06:32:27 Gast12319
NotSolved
Blau Do while-Schleife verschachteln
22.03.2019 09:01:34 Gast14424
NotSolved
22.03.2019 06:38:45 Gast28562
NotSolved

Ansicht des Beitrags:
Von:
Gast14424
Datum:
22.03.2019 09:01:34
Views:
489
Rating: Antwort:
  Ja
Thema:
Do while-Schleife verschachteln

Erst einmal den "Schleifen - Fehler" ausgebügelt schaut der Code wohl so aus

Sub Artikelzuordnung()
'Artikel aus Tabellenblatt Materialinformation zu dem jeweiligen Complaint zuordnen.
'leere Artikelnummernfelder mit n/a füllen

Dim s As Integer
Dim i As Integer


   ThisWorkbook.Worksheets("query_export_results").Activate
   i = 2
   Do While Cells(i, 1) <> " "

      s = 2
    
      Do While Cells(s, 1) <> " "

         If Cells(i, 1).Value = Worksheets("Material Information").Cells(s, 1) Then

            If Worksheets("Material Information").Cells(s, 3).Value = "Yes" Then

               Worksheets("Material Information").Cells(s, 10).Copy Destination:=Worksheets _
                ("query_export_results").Cells(i, 3) 'Gerätetyp in Complaintübersicht in Spalte C (Machine Type) kopieren


            Else
            
               Worksheets("Material Information").Cells(s, 5).Copy Destination:=Worksheets _
                 ("query_export_results").Cells(i, 4)       'Artikelnummer in Complaintübersicht in Spalte D kopieren

               Worksheets("Material Information").Cells(s, 6).Copy Destination:=Worksheets _
                 ("query_export_results").Cells(i, 5) 'Artikelbezeichnung in Complaintübersicht in Spalte E Kopieren.

            End If
            
         End If

         s = s + 1
         
      Loop
                
      i = i + 1
      
   Loop

End Sub

Damit greift der Vergleich aber max. 1 x und dann knallt deine Variable s an das Ende seiner Fahnenstange - Loop bis max. Integer Zahl *)

*) arbeite ich mit Variablen die Zellzeilen ansprechen, dann wähle ich den "natürlichen" Datentyp LONG

Was in deinem Fall aber nur das sinnlose Hochzählen verlängert, denn

ThisWorkbook.Worksheets("query_export_results").Activate

Du operierst also aus einem aktiven Arbeitsblatt und vergleichst eine Zelle daraus mit einer Zelle aus einem anderen Arbeitsblatt - OHNE
der zweiten Zelle einen Bezug zum anderen mitzugeben

Do While Cells(i, 1) <> " "
      s = 2
   
      Do While Cells(s, 1) <> " "


Ergo werden hier nicht zwei Zellen miteinander verglichen, da VBA ohne fehlenden Bezug immer die Zelle aus dem aktiven Arbeitsblatt versteht

Zelle ist nicht leer und Zellinhalt = Zellinhalt, die Schleife wird nie unterbrochen


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
21.03.2019 20:05:18 thomas
NotSolved
21.03.2019 21:52:48 Werner
NotSolved
22.03.2019 06:32:27 Gast12319
NotSolved
Blau Do while-Schleife verschachteln
22.03.2019 09:01:34 Gast14424
NotSolved
22.03.2019 06:38:45 Gast28562
NotSolved