Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme bei Programmierung

Forumthread: Probleme bei Programmierung

Probleme bei Programmierung
ray
Hallo,
ich schaffe es einfach nicht, zwei codes zu einem zu machen. Kann mir jemand helfen und am besten auch erklären was ich falsch mache:
Diese Beiden codes sollen zu einem werden (Code1 füllt ComboBox1 und Code2 füllt ComboBox2 aus der selben Quelle):
1. Code
'#### ComboBox mit ALLEN Mänglen füllen START #### 
Dim wbk As Workbook
   Dim wks As Worksheet
   Dim vRow As Variant
   Dim iRow As Integer, iRowT As Integer, iRowL As Integer
   
   Application.ScreenUpdating = False
   
   Set wbk = Workbooks.Open("F:\daten\mängelliste.xls")
   
            Set wks = wbk.Sheets(1)
            iRowL = Cells(Rows.Count, 8).End(xlUp).Row
            Workbooks.Add
            For iRow = 1 To iRowL
                vRow = Application.Match(wks.Cells(iRow, 8).Value, Columns(1), 0)
                If IsError(vRow) Then
                  iRowT = iRowT + 1
                  Cells(iRowT, 1).Value = wks.Cells(iRow, 8).Value
                End If
            Next iRow
            Range("a1").CurrentRegion.Sort _
               key1:=Range("a1"), order1:=xlAscending, Header:=xlNo
            With cbMängelliste
               .List = Range("A1").CurrentRegion.Value
               If .ListCount > 0 Then .ListIndex = 0
            End With

   ActiveWorkbook.Close savechanges:=False
   wbk.Close
   
   Set wbk = Nothing
   Set wks = Nothing
   
   Application.ScreenUpdating = True
'#### ComboBox mit Mänglen füllen ENDE #### 
Code2:
If wks.Cells(iRow, 3).Value = "111" Then
vRow = Application.Match(wks.Cells(iRow, 8).Value, Columns(1), 0)
If IsError(vRow) Then
iRowT = iRowT + 1
Cells(iRowT, 1).Value = wks.Cells(iRow, 8).Value
End If
End If
Next iRow

Wenn ich den Zeilen des Code2 mit den entsprechenden Zeilen von Code1 austausche, dann funzt dieser. Baue ich das jetzt aber so zusammen geht nix:
'#### ComboBox mit ALLEN Mänglen füllen START #### 
Dim wbk As Workbook
   Dim wks As Worksheet
   Dim vRow As Variant
   Dim iRow As Integer, iRowT As Integer, iRowL As Integer
   
   Application.ScreenUpdating = False
   
   Set wbk = Workbooks.Open("F:\daten\mängelliste.xls")
   
            Set wks = wbk.Sheets(1)
            iRowL = Cells(Rows.Count, 8).End(xlUp).Row
            Workbooks.Add
            For iRow = 1 To iRowL
                vRow = Application.Match(wks.Cells(iRow, 8).Value, Columns(1), 0)
                If IsError(vRow) Then
                  iRowT = iRowT + 1
                  Cells(iRowT, 1).Value = wks.Cells(iRow, 8).Value
                End If
            Next iRow
            Range("a1").CurrentRegion.Sort _
               key1:=Range("a1"), order1:=xlAscending, Header:=xlNo
            With cbMängelliste
               .List = Range("A1").CurrentRegion.Value
               If .ListCount > 0 Then .ListIndex = 0
            End With
                        
                        'jetzt nochmal nur mit WhgNr 
                        Set wks = wbk.Sheets(1)
                        iRowL = Cells(Rows.Count, 8).End(xlUp).Row
                        Workbooks.Add
                        
                        For iRow = 1 To iRowL
                         If wks.Cells(iRow, 3).Value = "111" Then
                         vRow = Application.Match(wks.Cells(iRow, 8).Value, Columns(1), 0)
                             If IsError(vRow) Then
                             iRowT = iRowT + 1
                             Cells(iRowT, 1).Value = wks.Cells(iRow, 8).Value
                             End If
                         End If
                         Next iRow
                        
                           
                        Range("a1").CurrentRegion.Sort _
                           key1:=Range("a1"), order1:=xlAscending, Header:=xlNo
                        With cbMängelAlle
                           .List = Range("A1").CurrentRegion.Value
                           If .ListCount > 0 Then .ListIndex = 0
                        End With
   
   ActiveWorkbook.Close savechanges:=False
   wbk.Close
   
   Set wbk = Nothing
   Set wks = Nothing
   
   Application.ScreenUpdating = True
'#### ComboBox mit Mänglen füllen ENDE #### 

Viele Grüße aus Hamburg
Ray
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Probleme bei Programmierung
01.09.2009 14:19:50
fcs
Hallo Ray,
im 2. Teil sind einige Referenzen zum Blatt-Objekt wks unvollständig.
Lösche im 2. Teil die beiden Zeilen
                        Set wks = wbk.Sheets(1)
iRowL = Cells(Rows.Count, 8).End(xlUp).Row

Sie sind überflüssig, da die entsprechenden Anweisungen schon im 1. Teil stehen, dort aber keine Problem machen, da zum Zeitpunkt des Makrostarts das Blatt (1) -zufällig?- das aktive Blatt ist.
oder ergänze
                        Set wks = wbk.Sheets(1)
iRowL = wks.Cells(wks.Rows.Count, 8).End(xlUp).Row

Der Vollständigkeit halber solltets du die die Referenzen zum Blatt wks im 1. Teil auch ergänzen, um Probleme zu minimieren.
Gruß
Franz
Anzeige
AW: Probleme bei Programmierung
01.09.2009 15:28:23
ray
Hallo Franz,
ich habe das so gemacht, aber jetzt kommt ErrMld:
Laufzeitfehler 1004
Die Sort-Methode des Range-Objektes konnte nicht ausgeführt werden.
Wenn der code unterbrochen wird, sehe ich das Excel eine neue Mappe erstellt hat, in der die Mängel von "111" richtig stehen, aber die ersten Zeile dieser neuen Mappe leer sind.
Hat das was zu bedeuten?
Gruß Ray
Anzeige
die Lösung:
01.09.2009 15:35:18
ray
iRowL = 0
iRowT = 0
Danke Franz und beste Grüße aus HH bei bevorstehenden Gewitter
ray
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige