[ Blue82 @ 28.06.2017. 07:25 ] @
Potrebno mi je da korisnik obelezavanjem misa, selektuje cejile u kojima ce program nesto uraditi.
Koristim sledeci code:
Code:

Private Sub range()
    Dim rg1 As range
    Set rg1 = Application.InputBox(Prompt:="Odaberite range", Title:="Korak 1", Type:=8)
    MsgBox (rg1.Address)
End Sub


Kada misem odaberem rang on izgleda ovako:


Medjutim ukoliko u istoj tabeli ukljucim filter i izbacin neku od stavki, kada izaberem rang on izgleda ovako:


Problem mi je to, sto u selektovani range program uzme i hajdovane celije (hajdovane su zbog filtera).
Treba mi nacin kako mogu da selektujem odredjene celije na nacin kako to radi SELECT u Excelu. Naime ako selektujem neku tabelu u kojoj je aktivan filter ta selekcija obuhvati samo one celije koje nisu obuhvacen filterom (nece obuhvatiti celije u redovima 6, 8 i 10).



[ Blue82 @ 28.06.2017. 07:39 ] @
Sada mi je palo na pamet moguce resenje. Program bi mogao da prodje kroz selektovani range i proveri da li su row ili column svake izabrane celije hide i ako jesu da ih preskoci ali pretpostavljam da mozda ima elegantnije resenje da se u startu obelezi ispravan range.
[ Jpeca @ 28.06.2017. 08:27 ] @
Možeš da iskoristiš metod SpecialCells za Range objekat
Code:
rg1.SpecialCells(xlCellTypeVisible)


Npr. kod iz primera bi mogao da bude
Code:
Private Sub range()

    Dim rg1 As range
    On Error GoTo Cancellation
    Set rg1 = Application.InputBox(Prompt:="Odaberite range", Title:="Korak 1", Type:=8)

    MsgBox rg1.SpecialCells(xlCellTypeVisible).Address
    Exit Sub
Cancellation:
    MsgBox "Operacija je otkazana", vbApplicationModal
    
End Sub


U primeru sam dodao i neku poruku u slučaju Cancel na Input box
[ Blue82 @ 28.06.2017. 08:55 ] @
Zanimljivo, elegantnije resenje.