VBA-Fehler, 400, der Wechsel zwischen Tabellen
Rufe ich aus einem Tabellenblatt-Modul eine Funktion, die einige Verarbeitung in einem anderen Blatt und gibt eine Ganzzahl zurück. Dann möchte ich schreiben, dass integer in einer Zelle in dem Blatt, von wo aus die Funktion aufgerufen wurde. Ich erhalte eine Fehlermeldung 400, ich glaube, ich weiß, nicht korrekt verarbeitet, das Umschalten zwischen den Blättern.
Könnten Sie mir helfen mit, dass?
Function lastNonZero(Rng As Range) As Integer
i = 19
Do While ActiveCell.Value = 0
ActiveCell.Offset(0, -1).Activate
i = i - 1
Loop
lastNonZero = i
End Function
Auszug aus der Sub, sich in das Blatt Ein s-Modul:
For j = startRow To startRow + (nRows - 1)
Worksheets("B").Select
Range("Y" & j).Activate
k = lastNonZero(Worksheets("B").Range("Y" & j))
Worksheets("A").Range("BZ" & j) = k
Next j
- Meinst du, dass die for-Schleife in eine Sub die sich auf dem Blatt Ein?
- Genau, das ist es, was ich meine, sehr zu schätzen Ihre Hilfe
- auf welcher Zeile bekommst du den Fehler? Bereich als argument übergeben
lastNonZero
ist nie benutzt in der Funktion, das ist wahrscheinlich nicht das, was du meinst zu tun. - Ich habe bereits den Fehler in der Zeile befor ich die Funktion aufrufen,d.h. Range("Y" & j).Aktivieren........danach wird die Eingabe für die Funktion ist in Blatt B und die Funktion der Verarbeitung getan werden sollte, in Blatt B und eine ganze Zahl zurück, diese ganze Zahl sollte dann geschrieben werden, um eine Zelle in Blatt A
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, ersetzen Sie die
Range("Y" & j)
Zeile mit:Beim Aufruf
Range(xxx)
im Blatt-Modul, es bezieht sich auf einen Bereich in diesem Blatt, ob es ausgewählt ist oder nicht. Aber wenn das Blatt nicht ausgewählt ist und Sie versuchen, wählen/aktivieren Sie den Bereich, wird ein Fehler zurückgegeben, weil Sie nicht wählen Sie einen Bereich auf einem Blatt, das nicht das aktive Blatt ist.ps: das ändert nichts an der Tatsache, dass in der nächsten Zeile (
k = lastNonZero(Worksheets("B").Range("Y" & j))
), das argument ist nicht in derlastNonZero
- Funktion).