Strona 2 z 2

Re: Kopiowanie tylko wyfiltrowanych Wyników

: pt kwie 12, 2024 12:09 pm
autor: Jermor
Możesz nie podawać drugiego argumentu. Pojawią się tylko cyfry znaczące.

Kod: Zaznacz cały

wynik=oFA.callFunction( "dec2hex", array(liczba) )

Re: Kopiowanie tylko wyfiltrowanych Wyników

: pt kwie 12, 2024 1:28 pm
autor: Altaro
Zrobiłem to prościej, bez wskazywania długości hex-a

Kod: Zaznacz cały

Function Int2Hex(iLong As Long) as string
    Int2Hex = Hex( iLong )
End Function
i wywołanie

Kod: Zaznacz cały

komórka=Int2Hex(oTabela.getCellByPosition(2,2).string)

Re: Kopiowanie tylko wyfiltrowanych Wyników

: pt kwie 12, 2024 1:34 pm
autor: Jermor
Zafiksowałem się na tym, że chcesz w Basicu wykorzystać funkcję Calca, więc w ogóle nie wziąłem pod uwagę, że w Basicu jest funkcja Hex.

Re: Kopiowanie tylko wyfiltrowanych Wyników

: pt kwie 19, 2024 1:28 pm
autor: Altaro
Najważniejsze że człowiek sobie poradził. Teraz zastanawiam się jak zagnieździć funkcję if w if.... jeśli chodzi o macro.

Potrzebuję wykonywać operację w pętli ponieważ w tabeli występują wiersze które nie są numerami i je należy usuwać., a w zależności od zmiennej ta funkcja, musi się minimalnie różnić od siebie.

próbuję w taki sposób ale nie działa:

Kod: Zaznacz cały

Sub Usun_wklejone_naglowki(z$,wiersze)
if z$ = "A" then
For i=0 to wiersze
if isNumeric(oRoboczy.getCellByPosition(0,i).string) = false then
oRoboczy.getRows.removeByIndex(i,1)
end if
Next
else
For i=0 to wiersze
if isNumeric(oOrange.getCellByPosition(0,i).string) = false then
oOrange.getRows.removeByIndex(i,1)
end if
next
End Sub
Niestety nie działa i już przyglądam się temu którąś minute i nic.

Re: Kopiowanie tylko wyfiltrowanych Wyników

: pt kwie 19, 2024 3:17 pm
autor: Jermor
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.

Re: Kopiowanie tylko wyfiltrowanych Wyników

: pt kwie 26, 2024 9:44 am
autor: Altaro
Dziękuję. Wszystko działa. Na kolejne tematy, zakładam oddzielne wątki.