Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    10

    macro per spostare celle excel

    premetto che non conosco molto le macro excel

    ho creato un foglio in cui con un comando-freccia-avanti, sposto il contenuto di una cella in una cella vicina. Questo per sei posizioni (un campo di pallavolo).

    Sub Rotazione()
    Dim strValoreTemp As String
    strValoreTemp = Foglio2.Cells(3, 3)
    Foglio2.Cells(3, 3) = Foglio2.Cells(7, 3)
    Foglio2.Cells(7, 3) = Foglio2.Cells(7, 6)
    Foglio2.Cells(7, 6) = Foglio2.Cells(7, 9)
    Foglio2.Cells(7, 9) = Foglio2.Cells(3, 9)
    Foglio2.Cells(3, 9) = Foglio2.Cells(3, 6)
    Foglio2.Cells(3, 6) = strValoreTemp
    End Sub

    Ora vorrei che con lo stesso comando, si spostasse anche una cella diversa che è collegata alla prima (seconda, ecc.) con la propria formattazione (ad esempio il bordo) oltre che il contennuto.

    Non riesco a trovare alcuna soluzione.

    Magari sarà banale ma ripeto che sono alle prime armi.

    grazie a chi vorrà aiutarmi
    fezucca

  2. #2
    Ciao,
    non ho capito cosa intendi con "cella collegata", comunque per spostare anche la formattazione di una cella oltre al suo contenuto conviene copiarla, questa, per esempio è la tua macro riscritta col comando copy:

    codice:
    Sub Rotazione()
    Foglio2.Cells(3, 3).Copy Destination:=Foglio2.Cells(1, 1)
    Foglio2.Cells(7, 3).Copy Destination:=Foglio2.Cells(3, 3)
    Foglio2.Cells(7, 6).Copy Destination:=Foglio2.Cells(7, 3)
    Foglio2.Cells(7, 9).Copy Destination:=Foglio2.Cells(7, 6)
    Foglio2.Cells(3, 9).Copy Destination:=Foglio2.Cells(7, 9)
    Foglio2.Cells(3, 6).Copy Destination:=Foglio2.Cells(3, 9)
    Foglio2.Cells(1, 1).Copy Destination:=Foglio2.Cells(3, 6)
    Foglio2.Cells(1, 2).Copy Destination:=Foglio2.Cells(1, 1)
    End Sub
    invece di appoggiarmi alla variabile strValoreTemp utilizzo la casella 1,1 e poi la pulisco ricoprendola con la 1,2 che è vuota.

    Vedi se può esserti utile.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    10
    grazie e ciao

    diciamo che la tua è una soluzione alternativa alla mia.

    Il problema è fare spostare altre celle con lo stesso comando:

    se io avvio la macro che sposta la cella 3, 3 al posto della 3, 7
    vorrei che con lo stesso comando si spostasse anche un'altra cella che ha
    un doppio bordo ed una lettera come contenuto.

    Ti allegherei il file per chiarirti la mia esigenza ma lo spazio non me lo permette.

    Praticamente è un campo da pallavolo dove ad ogni rotazione, la posizione ed il rapporto dei giocatori (celle) cambia.

    grazie ancora

  4. #4
    l'allegato non lo vedo

    comunque ... qual è il problema a spostare altre celle? Fai già n spostamenti, basta aggiungere le altre istruzioni che ti servono, no? Forse mi sfugge qualcosa.

    Se le istruzioni di spostamento le scrivi come hai fatto tu sposti solo il contenuto, se le scrivi come ho fatto io sposti anche la formattazione quindi basterebbe aggiungere alle tue istruzioni un certo numero delle mie, una per ogni nuova cella che vuoi spostare.

    Ma forse vuoi selezionare un certo numero numero di celle? Se il problema è quello si potrebbe usare Range o Offset però devo capire meglio cosa devi fare.

    EDIT puoi allegare anche un piccolo screen-shot
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Per esempio questa istruzione

    codice:
    Foglio2.Range(Cells(7, 3), Cells(8, 5)).Copy Destination:=Foglio2.Cells(3, 3)

    Copia un rettangolo che ha l'angolo superiore sinistro nella cella 7,3 e quello inferiore destro nella cella 8,5 e lo incolla posizionando l'angolo superiore sinistro nella cella 3,3

    La offset a pensarci bene in questo caso non avrebbe molto senso visto che indichi una per una tutte le righe e le colonne.

    La offset infatti permette di riferirsi ad una cella contando di quante righe e colonne spostarsi rispetto ad un'altra ma ha senso solo se il riferimento di quest'altra è dinamico non se è fisso come nel tuo caso.

    Non so se è quello che ti serviva.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    10
    non so se questo passaggio nel forum è consentito ma non riesco ad allegare un file alla risposta.

    l'immagina è visible qui:

    http://img15.imageshack.us/i/macrovolley2.jpg/

    in giallo sono evidenziati le celle che dovrebbero spostarsi

    grazie

  7. #7
    Il proxy dell'ufficio mi blocca quel sito (anzi tutti, tranne html.it e un altro paio) quindi potrò vederla solo da casa stasera sul tardi.
    Comunque continuo a non capire che problema c'è ad aggiungere altre istruzioni di spostamento o copia.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    10
    attendo volentieri stasera o quando potrai,

    vedendo l'immagine forse sarà più chiaro il mio problema.

    stasera proverò a mettere in pratica i tuoi consigli


    buon lavoro e grazie ancora

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    10
    ciao,
    ho provato la tua proposta:

    Sub Rotazione()
    Foglio2.Cells(3, 3).Copy Destination:=Foglio2.Cells(1, 1)
    Foglio2.Cells(7, 3).Copy Destination:=Foglio2.Cells(3, 3)
    Foglio2.Cells(7, 6).Copy Destination:=Foglio2.Cells(7, 3)
    Foglio2.Cells(7, 9).Copy Destination:=Foglio2.Cells(7, 6)
    Foglio2.Cells(3, 9).Copy Destination:=Foglio2.Cells(7, 9)
    Foglio2.Cells(3, 6).Copy Destination:=Foglio2.Cells(3, 9)
    Foglio2.Cells(1, 1).Copy Destination:=Foglio2.Cells(3, 6)
    Foglio2.Cells(1, 2).Copy Destination:=Foglio2.Cells(1, 1)
    End Sub

    ma siccome io ho unito delle celle mi dice che non è possibile eseguire il comando.

    Inoltre anche nell'eseguire

    Sub Prova ()
    Foglio2.Range(Cells(7, 3), Cells(8, 5)).Copy Destination:=Foglio2.Cells(3, 3)
    End Sub

    mi dice : metodo 'Rnge dell'oggetto'_Worksheet non riuscito

    Potrebbe dipendere sempre dali'unione delle celle?

    Fezucca

  10. #10
    Ciao,
    ho provato a unire un po' di celle e non mi dà errori qundi non credo sia dovuto a quello, ho però visto che in excel ogni foglio di calcolo ha un corrispondente foglio dell'editor dei comandi e che se inserisci comandi riferiti al foglio2 in un editor che non è quello del foglio 2 rifiuta di eseguirli, può darsi che sia per questo che ti dà quell'errore?

    Magari togli del tutto i riferimenti ai fogli cioè scrivi

    codice:
    Sub Prova ()
    Range(Cells(7, 3), Cells(8, 5)).Copy Destination:=Cells(3, 3)
    End Sub
    così la macro lavorerà nel foglio corrispondente all'editor in cui gira.

    Poi, dimmi un'altra cosa, una volta scritta la macro come fai a eseguirla? Io vado nell'editor e clicco su play, fai così anche tu?

    Ho scaricato l'immagine di cui parlavamo ma me la devi spiegare perché di pallavolo non ne so proprio niente.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.