Simula tasti freccia



  • Simula tasti freccia
    di marinoernestoch data: 03/08/2014 12:23:12

    Buon giorno.
    Esiste un'istruzione che simula il tasto freccia a destra/sinistra che si posiziona sulla cella immediatamente a destra/sinistra visibile?
    Più precisamente: potrei avere delle colonne nascoste (es. la C e la D).
    Sono sulla cella B3 e vorrei andare alla prima di destra visibile, per cui, se la colonna C è nascosta, mi serve la cella in D; se anche la colonna D è nascosta allora mi serve la cella in E.
    Preferirei non usare la tecnica del selection.offsett(0,1) seguita dal selection.entirecolumn.hiden
    Ringrazio anticipatamente.
     
    Sub nascosto_visibile()
    Range("a1").Select
    a = Range("a1").Value
    Do While a <> ""
       Selection.Offset(0, 1).Select  
     ' sceglie la cella a destra, anche se non è visibile e non mi va bene
       a = Selection.Value
       MsgBox a
    Loop
    End Sub



  • di lepat (utente non iscritto) data: 03/08/2014 15:48:49

    quindi questa soluzione non ti va bene ?
     
    Sub nascosto_visibile()
    Range("a1").Select
    a = Range("a1").Value
    Do While a <> ""
       Selection.Offset(0, 1).Select
       If Selection.EntireColumn.Hidden = False Then
         a = Selection.Value
         MsgBox a
       End If
    Loop
    End Sub



  • di scossa data: 03/08/2014 18:29:17

    cit.: "Esiste un'istruzione che simula il tasto freccia a destra/sinistra che si posiziona sulla cella immediatamente a destra/sinistra visibile?...."

    Non ho capito l'utilità di questa cosa, visto che ti basta premere il relativo tasto ......

    Comunque il codice sotto emula la pressione del tasto Freccia-Destra (ovviamente funziona solo in run-time)

    Altrimenti, spiega meglio la tua necessità reale.

    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)


     
    Public Sub DxArrow()
      Application.SendKeys ("{RIGHT}")
    End Sub
    



  • di marinoernestoch data: 03/08/2014 19:20:03

    Era semplicemente per non appesantire le macro con codifiche superflue, dal momento che le colonne sono visibili/nascoste in funzione dei valori inseriti in userform (quindi imprecisate) e che il codice che ho scritto è già abbastanza complicato, sia da eseguire, ma sopratutto da leggere e correggere nel caso debba applicare modifiche; Lo stesso problema mi si pone con le righe che possono essere visibili/nascoste in base ai criteri inseriti. Sinora ho usato la tecnica suggerita da Lepat, per le colonne, mentre per le righe la selection.entirerow.hidden. Ma con 3 o 4 IF nidificate, eliminarne qualcuna sarebbe stato meglio.
    1000 grazie. ernesto



  • di Vecchio Frac data: 05/08/2014 13:58:41

    Da come l'avevi messa nel primo post, sembrava che dovessi raggiungere la prima cella visibile sulla riga: e allora non serve nè codice nè artificio perchè, premendo la freccia destra, Excel si posiziona sulla prima cella visibile a destra del cursore.

    Dall'ultimo post invece hai nominato un userform e quindi questo cambia le cose :)
    Ora, dipende molto dalla reale esigenza ma ricorda che esiste il metodo SpecialCells(xlCellTypeVisible) di un oggetto Range.





  • di marinoernesto (utente non iscritto) data: 05/08/2014 15:08:06

    Grazie vecchio frac. Avevo già pensato allo special cell ma non calzava al mio caso. Per ora ho lasciato il codice (come avrai avuto modo di vedere nell'altro post (dell'afterupdate) con il test entirerows.hidden.