Delucidazioni Excel

di il
5 risposte

Delucidazioni Excel

Buondì!

Io avrei un problema, e mi chiedevo se voi più esperti poteste aiutarmi. Premetto che programmo in visual basic da.. 10 ore?

Ho creato questa macro:



Sub lvlup()
Selection.Interior.ColorIndex = xlNone
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.Interior.ColorIndex = xlNone
ActiveCell.Offset(1, -1).Range("A1:B1").Select
Selection.Interior.ColorIndex = 37
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.Copy
Range("C27").Select
ActiveSheet.Paste
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
Selection.Interior.ColorIndex = xlNone
End Sub
Tutto ciò, serve (una volta selezionata una certa casella), a disevidenziare lei e quella alla sua destra, poi scendere di un livello, evidenziare le due caselle ed infine copiare il contenuto di quella più a destra nella cella C27 (con i vari parametri di casella).
Perciò se all'inizio avevo

* A B C
1 X Y
2 H J
.
.
.
27 Y

Dopo aver selezionato la cella A1, ed aver usato la macro (con un bottone) ottengo

* A B C
1 X Y
2 H J
.
.
.
27 J

--------

Ora, volevo sapere se era possibile alla fine di tutta la macro far sì che la casella selezionata che rimane sia (nel caso dell'esempio) A2 (che contiene H).

Si può?

Grazie!

5 Risposte

  • Re: Delucidazioni Excel

    Ciao.
    Ma ti basterebbe avere che alla fine della macro, si ritorni alla cella A2 oppure sempre nella cella sotto alla tua inziale (di partenza) ?!
    Per ritornare alla A2, ti basterà aggiungere un'ultima riga, prima della "Fine Sub":
    Range("A2").Select
    Saluti "Toscani"
    Luciano.
  • Re: Delucidazioni Excel

    Si, tecnicamente è A2 però genericamente. Cioè non semrpe A2 (col range), ma sempre la casella sotto la prima (che è generica).

    Non si può assegnare tipo ad una variabile il "nome" di quella cella, quindi spostarsi coll'offset di uno in basso?

    --------

    Un'altra cosa, quale sarebbe una macro per aumentare di uno il valore di una cella (una ben precisa, selezionata col Range suppongo).
  • Re: Delucidazioni Excel

    Io non sono esperto di Excel, ma di Visual Basic, abbastanza, ho fatto un paio di prove in un foglio di Excel e ho trovato qualcosa x te.
    Per la prima questione:
    Allora visualizzando nell'editor del VB la tua Sub, scegli nella parte in alto a sinistra: "Generale" e a destra: "Dichiarazioni" e scrivi:
    Public ComoCell (la useremo come variabile di comodo per memorizz. l'indirizzo della cella sotto la prima)
    Poi, tra le 2 righe della tua macro...Inserisci l'assegnazione:
    ...
    ActiveCell.Offset(1, -1).Range("A1:B1").Select
    ComoCell = ActiveCell.Address
    Selection.Interior.ColorIndex = 37
    ...
    In fondo alla macro, come ultima istruzione metteremo:
    Range(ComoCell).Select

    Per sommare un numero al contenuto di una cella è semplicissimo.
    Es. metti che io voglia incrementare di 1 la cella "F3" (metti che la metti legata all'evento click di un Pulsante), basta fare un sub routine del tipo:
    [f3] = [f3] + 1 (come vedi ci si riferisce ad una cella semplicemente mettendo le coordinate tra parentesi quadre... potrai fare tante operazioni...
    (Se provi a metterla anche in fondo alla tua macro vedrai che ti incrementerà ad ogni esecuzione della macro...)
    Spero tutto Ok.
    Luciano.
  • Re: Delucidazioni Excel

    Ottimo, sono riuscito! Grazie mille!

    Ora un'altro quesito..

    Mettiamo che io voglia copiare il value di A1 nel foglio in cui sto scrivendo (Foglio1), nella stessa casella ma nel foglio2 e nel foglio 3.

    Come posso farlo? (usando il Range("A1").Value se possibile)
  • Re: Delucidazioni Excel

    Dopo un paio di prove, ho trovato un modo.
    Ci si riferisce ad un foglio con il suo nome tra [nomefoglio].[cella]
    Quindi se metti nel codice di un Pulsante:
    [Foglio2].[a1] = [a1]
    [Foglio3].[a1] = [a1]
    Poi se scrivi in A1 qualcosa essendo posizionato nel "foglio1" e premi il pulsante, vedrai che nel foglio 2 e 3, troverai quel valore nella cella A1
    Buon divertimento.
    Luciano.
Devi accedere o registrarti per scrivere nel forum
5 risposte