Po pierwsze, nie powinieneś kontynuować tematu "Kopiowanie tylko wyfiltrowanych wyników" tylko założyć nowy temat. To o co pytasz teraz, dotyczy innego zakresu wiedzy i nie jest związane z filtrowaniem wyników.
Co do twojej procedury, to może najpierw napisz, co ci nie działa?
Z kodu, jaki zamieściłeś, wynika, że chcesz usuwać te wiersze (w obiekcie oRoboczy, gdy argument "z" ma wartość "A" lub wiersze w obiekcie oOrange, gdy ten argument jest różny od "A"), które w pierwszej kolumnie zawierają wpis inny niż liczba.
Ten kod można uprościć do takiej postaci:
Kod: Zaznacz cały
Sub Usun_wklejone_naglowki(z$,wiersze)
For i=0 to wiersze
if z$ = "A" then
if isNumeric(oRoboczy.getCellByPosition(0,i).string) = false then oRoboczy.getRows.removeByIndex(i,1)
else
if isNumeric(oOrange.getCellByPosition(0,i).string) = false then oOrange.getRows.removeByIndex(i,1)
end if
next
End Sub
Jednak jego działanie nie będzie satysfakcjonujące. Argument "wiersze" w twojej funkcji podaje, do którego wiersza należy przeprowadzić tę operację. Zwróć uwagę na to, że usunięcie wiersza sprawi to, iż następny wiersz w obiekcie otrzyma numer tego usuniętego wiersza. Jednak instrukcja Next powiększy indeks "i" o jeden i w ten sposób ten wiersz nie będzie już podlegał sprawdzaniu.
Dlatego zaproponuję taką funkcję:
Kod: Zaznacz cały
Sub Usun_wklejone_naglowki(z$)
dim oArkusz as Object
If z="A" then oArkusz=oRoboczy else oArkusz=oOrange
i=0
Do while oArkusz.getCellByPosition(0,i).string <> ""
if isNumeric(oArkusz.getCellByPosition(0,i).string) = false then oArkusz.getRows.removeByIndex(i,1) : i=i-1
i=i+1
Loop
End Sub
Funkcja wykonuje sprawdzania danych w pierwszej kolumnie wymaganego arkusza do osiągnięcia pustej komórki w wierszu.