Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Spostamento ad un'ALTRA CELLA nella STESSA RIGA

Ultimo Aggiornamento: 25/07/2022 16:23
Post: 4
Registrato il: 25/05/2013
Città: MILANO
Età: 41
Utente Junior
Excel 2011 per Mac (ver 14.4.4)
OFFLINE
21/07/2022 18:27

Spostamento ad un'ALTRA CELLA nella STESSA RIGA
Buongiorno a tutti, 

Complimenti per la qualità dei consigli e delle soluzioni proposte.

Sto lavorando con un file che è composto da molte colonne e nel caricare i dati ho necessità di spostarmi tra le colonne con sequenze sempre diverse.
Le celle dati contengono solo numeri.

Vorrei fare in modo che nella cella dati fosse accettata solo la digitazione di un carattere numerico (o virgola) e che se viene premuto un tasto alfabetico ne viene intercettato l’evento, non si inserisce la lettera digitata ma si sposta il focus sulla cella, della stessa riga, che corrisponde alla lettera digitata (chiaramente bisogna prima definire la lettera che corrisponde a ciascuna colonna).

Qualcuno mi può aiutare nel realizzare questo codice?


Allego un file d'esempio sul quale fare le valutazioni...

Grazie in anticipo

Francesco

P.S.: E' possibile far cambiare colore alla riga sulla quale è presente la cella attiva?
[Modificato da FranzKatanz 21/07/2022 18:45]
Post: 6.903
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
22/07/2022 09:14

Ciao, da tuo file non è possibile cambiare il colore della riga, in quanto cambiando colore cambierebbe il colore di tutta la riga cancellando il colore corrente delle altre colonne.

ma un escamotage è possibile, invece di cambiare colore ti ho fatto inserire un "Motivo(Pattern)" in questo modo la riga selezionata diventa visibile rispetto alle altre.

sarebbe complesso assegnare una lettera per spostarsi tra le colonne, per cui ho optato per una convalida dati in questo modo puoi selezionare la colonna che vuoi, c'era un ma, perche selezionando la colonna se vi era un numero veniva sovrascritto dalla colonna cercata, ma sono riuscito a risolvere il problema, vedi se l'esempio va bene, un immagine



ti allego anche il file

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 4
Registrato il: 25/05/2013
Città: MILANO
Età: 41
Utente Junior
Excel 2011 per Mac (ver 14.4.4)
OFFLINE
25/07/2022 11:26

Ciao,
Grazie per la risposta immediata... io l'ho potuta leggere solo oggi per altri intoppi.
Interessanti le soluzioni proposte anche se devo dire che le colonne inserite nel file campione sono solo alcune delle colonne presenti nel file originale (che ne ha più di 90) per cui devo capire come utilizzare il codice proposto.

Mi sto studiando il codice che hai inserito ma non conosco diverse istruzioni.
Dove potrei trovare un a raccolta delle istruzioni di VBA per Excel con la descrizione dei comandi?
Avresti un testo da consigliarmi?

Grazie ancora e perdona se sono troppo "noob"
F
Post: 6.905
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
25/07/2022 16:23

Ciao, quali sono i comandi che non conosci?

comunque il codice usato è facilmente adattabile, questo il codice delle 2 macro per gli eventi del foglio.

Option Explicit
Private k

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, c, c1, d, x

On Error GoTo 1
If Not Intersect(Target, [A4:AL35]) Is Nothing Then
  Application.EnableEvents = False
  Debug.Print k
  r = Target.Row: c1 = Target.Column: d = Target
  If Not IsNumeric(d) Then
    For x = 1 To 38
      If d = Cells(1, x) Then c = x: Exit For
    Next x
    Cells(r, c1) = k
    Cells(r, c).Select
  End If
End If
1:
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r, c, d

On Error GoTo 1
If Not Intersect(Target, [A4:AL35]) Is Nothing Then
  Application.EnableEvents = False
  r = Target.Row
  Range("A4:AL34").Interior.Pattern = xlSolid
  Range(Cells(r, 1), Cells(r, 38)).Interior.Pattern = xlGray25
  k = Target
End If
1:
Application.EnableEvents = True
End Sub


la prima cosa da cambiare è la convalida per la ricerca della colonna, io ho inserito un nome per l'area delle intestazioni, quindi seleziona tutte le intestazioni e cambia la convalida con il nuovo range.

Elimina le celle unite delle intestazioni, non vanno bene, le intestazioni del file che hai inserito sono 38 ecco il primo elemento da cambiare nel codice dove vedi 38 inserisci il numero delle tue colonne

If Not Intersect(Target, [A4:AL35]) Is Nothing Then


questa riga stabilisce il range interessato quindi consideralo come Range("A4:AL35"), a questo punto devi cambiare "AL35" con la tua ultima colonna e riga se sono maggiori di 35

la seconda riga "Private k" è una variabile pubblica per il foglio non toccarla

questa è l'ìaltra riga da modificare

 Range("A4:AL34").Interior.Pattern = xlSolid


devi sostituire "AL34" con l'ultima colonna/riga questa riga serve per eliminare l'evidenziazione precedente, prima di evidenziare la riga selezionata.

queste sono le modifiche da fare per funzionare con più colonne, tutto qui.

anche se credo che il tuo metodo non sia molto efficiente se devi fare ricerche e report, io invertirei la tabella mettendo le colonne in verticale, ed i prezzi in orizzontale.

Ciao By Sal (8-D





[Modificato da by sal 25/07/2022 16:26]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Vota: 15MediaObject5,0024 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
VBA, testo nella Mail (14 messaggi, agg.: 30/04/2021 04:05)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 22:26. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com