Microsoft Excel

Herbers Excel/VBA-Archiv

With Sheets Fehler

Betrifft: With Sheets Fehler von: Sascha H.
Geschrieben am: 30.11.2015 09:32:59

Hallo,

an der markeierten Stelle tritt ein Fehler auf, woran kann das liegen?

Sub Test()

     istLeer = False
    
    'Aufbau von metalle(x, y, z)
    'x = Zeilenangabe, bei mehreren Proben werden mehrere Zeilen benötigt
    'y = Nummer des Datensatzes, zählt für jede Übertragung 1 hoch
    'z = 0, Zelle die kopiert werden soll
    '  = 1, Spalte in der Zieldatei, wo die Werte eingefügt werden sollen
    '  = 2, Quelltabelle (wenn nicht gesetzt dann ist diese das Deckblatt)
    '  = 3, Alternative zu z = 0 -> Hier kann direkt ein Text eingegeben werden, der dann so ü  _
_
bertragen wird
    Dim metalle(10, 20, 3) As String
    
    
    
    Dim metalle_proben
    Dim lCellMetalle As range
    Dim lRowMetalle As Long
    Dim metalleRange As range
    Dim flag As Boolean: flag = False
    
    metalle_proben = gibProbenArray(Sheets("Metalle").range("D19:D26"), Sheets("Metalle").range( _
 _
"S19:S26"))
    
    With Sheets("MakroData")
    
        Set lCellMetalle = .Cells.Find(What:="*", After:=range("A3"), _
        LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, _
        searchdirection:=xlPrevious)
        
        If lCellMetalle Is Nothing Then
            lRowMetalle = 1
        Else
            lRowMetalle = lCellMetalle.Row + 1
        End If
        
        metalleRange = .range("A3:E" & lRowMetalle) '<------------- Hier tritt der Fehler auf??
    
        For j = 0 To UBound(metalle_proben, 1)
            For i = 3 To lRowMetalle
            
                If .range("A" & i) = "Methoden" Then
                    flag = True
                End If
                
                If flag = False Then
                    metalle(j, i, 0) = .range("B" & i)
                    metalle(j, i, 1) = .range("C" & i)
                    metalle(j, i, 2) = .range("D" & i)
                    metalle(j, i, 3) = .range("E" & i)
                Else
                    For k = 0 To UBound(metalle_proben, 2)
                        If metalle_proben(j, k) = .range("A" & i) Then
                            metalle(j, i, 1) = .range("C" & i)
                            metalle(j, i, 3) = 1
                            Exit For
                        End If
                    Next k
                End If
                
            Next i
        Next j
    
    End With
    
    kopieren "C:\Users\oxshein\Desktop", "Ziel.xlsm", "Ziel", metalle, True, 1

End Sub

  

Betrifft: SET metalleRange = ... von: {Boris}
Geschrieben am: 30.11.2015 09:35:51

Hi,

sofern metalleRange ein Objekt sein soll.
Ich empfehle Variablendeklaration!

VG, Boris


  

Betrifft: Vergiss "Variablendeklaration"... von: {Boris}
Geschrieben am: 30.11.2015 09:37:22

Hatte nicht genau hingesehen. Antwort bleibt aber die selbe:

Range-Variable mit Set-Anweisung befüllen.

VG, Boris


  

Betrifft: AW: Vergiss "Variablendeklaration"... von: Sascha H.
Geschrieben am: 30.11.2015 09:50:34

Danke, kommt aber leider der selbe Fehler :-/...


  

Betrifft: AW: Vergiss "Variablendeklaration"... von: {Boris}
Geschrieben am: 30.11.2015 09:56:13

Hi,

welchen Wert hat denn die Variable lRowMetalle zum Zeitpunkt des Fehlers?
Und warum ist das Schlüsselwort Range bei Dir im Code immer klein (.range) geschrieben?

VG, Boris


  

Betrifft: AW: Vergiss "Variablendeklaration"... von: Sascha H.
Geschrieben am: 30.11.2015 10:08:50

Hey, hab mich vertan der Fehler kommt doch nicht mehr! Allerdings ist lRowMetalle = 3 anstatt 45. Erst wenn ich hier auf A1 setze, zählt er richtig:

Set lCellMetalle = .Cells.Find(What:="*", After:=range("A1"), _
LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, _
searchdirection:=xlPrevious)



 

Beiträge aus den Excel-Beispielen zum Thema "With Sheets Fehler"