Funzione relativa a cella attiva

Anonimo
2018-08-17T10:35:39+00:00

Buongiorno, avrei bisogno di un codice vba da inserire in una macro di Excel che esegua la seguente istruzione: SOLO SE LA CELLA ATTIVA SI TROVA NEL RANGE A5:A25 INSERIRE IL VALORE 133 NELLA CELLA A DESTRA E SU DI UNO. AD ESEMPIO SE LA CELLA ATTIVA SI TROVA IN A 15 IMMETTERE IL VALORE 133 NELLA CELLA B14, se la cella attiva si trova in A20 immettere il valore 133 in B19 è così via. Però in tutti i casi la cella attiva sia al di fuori dal range (A5:A25) si esca dalla routine. Grazie. Luca

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2018-08-20T18:45:10+00:00

Ciao Luca,

ti ringrazio molto dell'aiuto, pero' ho bisogno di una modifica perchè forse non mi sono spiegato bene all'inizio:

Ho bisogno che la macro non si attivi da sola allo spostamento della cella attiva, ma che venga eseguita tramite un bottone presente nel foglio stesso (evento clic) e comunque mi rimane comodo che le due costanti si possano variare entrando nel codice vba, come tu hai programmato.

In pratica solo quando l'utente clicca sul bottone ( e solo se la cella attiva si trova nel range "sIntervallo" ) venga inserito il valore "mioValore" nella cella a destra e su di uno.

Sono alle prime armi con il codice vba e non riesco a modificare da solo il tuo codice.

  • Fai clic dx sulla linguetta del foglio di interesse
  • Seleziona l'opzione Visualizza Codice dal menu contestuale risultante
  • Cancella il codice esistente
  • Alt+IM per inserire un nuovo modulo di codice standard
  • Nel nuovo modulo vuoto, incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Public Sub Aggiorna_Valori()

    Dim Rng As Range

    Const sIntervallo As String = "A5:A25"    '<<=== Modifica

    Const mioValore As Variant = 133             '<<=== Modifica

    Set Rng = Intersect(ActiveCell, ActiveSheet.Range(sIntervallo))

    If Not Rng Is Nothing Then

        Rng.Offset(-1, 1).Value = mioValore

    Else

        Call MsgBox( _

             Prompt:="Questa macro richiede che una cella" _

             & " nell'intervallo " & sIntervallo _

             & " sia selezionata", _

             Buttons:=vbInformation, _

             Title:="REPORT")

    End If

End Sub

'<<=========

Potresti scaricare il mio file di prova aggionato Luca20180820.xlsm

Postscriptum:

Nota che ho aggiunto un MsgBox al mio codice per avvisare l'utente se dovesse fare clic sul pulsante qualora una cella al di fuori dell'intervallo di interesse fosse attiva.

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2018-08-21T11:14:26+00:00

    Ciao Luca,

    Grazie 1000 Norman,

    sicuramente avrò ancora bisogno del tuo aiuto o di qualche altro partecipante della community, io per il momento sono ancora molto inesperto, ma mi appassiona riuscire a creare anche con il vostro aiuto dei file excel che mi aiutano nel mio lavoro quotidiano.

    Mi fa piacere che tu abbia risolto il problema e ti ringrazio per il cortese riscontro.

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-08-21T10:53:34+00:00

    Grazie 1000 Norman,

    sicuramente avrò ancora bisogno del tuo aiuto o di qualche altro partecipante della community, io per il momento sono ancora molto inesperto, ma mi appassiona riuscire a creare anche con il vostro aiuto dei file excel che mi aiutano nel mio lavoro quotidiano.

    Cordiali saluti

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-08-20T18:02:13+00:00

    Buongiorno Norman,

    ti ringrazio molto dell'aiuto, pero' ho bisogno di una modifica perchè forse non mi sono spiegato bene all'inizio:

    Ho bisogno che la macro non si attivi da sola allo spostamento della cella attiva, ma che venga eseguita tramite un bottone presente nel foglio stesso (evento clic) e comunque mi rimane comodo che le due costanti si possano variare entrando nel codice vba, come tu hai programmato.

    In pratica solo quando l'utente clicca sul bottone ( e solo se la cella attiva si trova nel range "sIntervallo" ) venga inserito il valore "mioValore" nella cella a destra e su di uno.

    Sono alle prime armi con il codice vba e non riesco a modificare da solo il tuo codice.

    Grazie se mi puoi aiutare.

    Cordiali saluti

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-08-17T11:10:07+00:00

    Ciao Luca,

    Buongiorno, avrei bisogno di un codice vba da inserire in una macro di Excel che esegua la seguente istruzione: SOLO SE LA CELLA ATTIVA SI TROVA NEL RANGE A5:A25 INSERIRE IL VALORE 133 NELLA CELLA A DESTRA E SU DI UNO. AD ESEMPIO SE LA CELLA ATTIVA SI TROVA IN A 15 IMMETTERE IL VALORE 133 NELLA CELLA B14, se la cella attiva si trova in A20 immettere il valore 133 in B19 è così via. Però in tutti i casi la cella attiva sia al di fuori dal range (A5:A25) si esca dalla routine.

    • Fai clic dx sulla linguetta del foglio di interesse
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        Dim Rng As Range

        Const sIntervallo As String = "A5:A25"            '<<=== Modifica

        Const mioValore As Variant = 133        '<<=== Modifica

        Set Rng = Intersect(Target.Cells(1), Me.Range(sIntervallo))

        If Not Rng Is Nothing Then

            Rng.Offset(-1, 1).Value = mioValore

        End If

    End Sub

    '<<========= 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm.

    Potresti scaricare il mio file di prova Luca20180817.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento