Proprietà Range e Cells



  • Proprietà Range e Cells
    di C (utente non iscritto) data: 04/02/2014 12:16:24

    Salve a tutti, ho una domanda molto banale da farvi... E' possibile utilizzare la proprietà Range per selezionare più celle singole, che però non stanno vicine fra di loro? Mi spiego meglio... Io attualmente ho:
    Range(Cells(i,1),Cells(i,2))
    Range(Cells(i,4),Cells(i,6))
    Range(Cells(i,7))
    Questi range vanno poi copiati e incollati in un altro foglio...
    La mia domanda è se è possibile scrivere queste tre righe in un'unica riga utilizzando una sola volta la proprietà Range...
    Ringrazio già coloro che mi risponderanno...:)



  • di patel data: 04/02/2014 12:56:02

    bastava usare il registratore di macro per scoprire come fare
     
    Sub Macro1()
        Range("A3,C3,E3,G3,I3").Select
    End Sub
    






  • di C (utente non iscritto) data: 04/02/2014 13:18:38

    No così non va bene. .. forse non mi sono spiegata bene ma le celle variano all'interno di un ciclo for, infatti se vedi io ci ho messo la i...



  • di scossa data: 04/02/2014 13:34:17

    Postare pezzetti di codice è un buon modo per generare solo confusione .....

    Studia l'help del metodo Application.Union ....



  • di C (utente non iscritto) data: 04/02/2014 15:21:10

    Ok grazie x il consiglio. .. Comunque non volevo generare confusione e non volevo nemmeno postare un pezzettino di codice. .. ho solo scritto quelle 3 righe come esempio per far capire meglio cosa stavo chiedendo, dal momento che la mia domanda era più teorica che pratica. . Mi dispiace di aver creato confusione...



  • di patel data: 04/02/2014 15:49:51

    Guarda che hai capito male, per avere risposte adeguate devi allegare tutto il codice e magari un file di esempio, nessuno di noi ha la sfera di cristallo.





  • di C (utente non iscritto) data: 04/02/2014 17:34:02

    Ho allegato un file di esempio come richiesto. Sono riuscita a selezionare più celle lontane tra di loro con Application.Union come mi ha suggerito Scossa. Però ho ancora un problema quando devo incollare queste celle nel Foglio2... mi dà l'errore "Proprietà o metodo non supportati dall'oggetto"... Non so se è effettivamente possibile fare quello che vorrei fare io...:/



  • di scossa data: 04/02/2014 19:37:15

    Lascio a te la responsabilità di garantire la congruenza tra le aree di copia e quelle di destinazione:
     
    Sub Esempio()
      Dim i As Long
      Dim wsFrom As Worksheet
      Dim wsTo As Worksheet
      Dim Copia As Range
      Dim incolla As Range
      Dim j As Long
      
      Set wsFrom = Foglio1
      Set wsTo = Foglio2
      For i = 2 To 4
        Set Copia = Application.Union(Range(wsFrom.Cells(i, 1), wsFrom.Cells(i, 4)), wsFrom.Cells(i, 6))
        Set incolla = Application.Union(Range(wsTo.Cells(i, 2), wsTo.Cells(i, 5)), wsTo.Cells(i, 7))
        For j = 1 To Copia.Areas.Count
          'incolla.Areas(j).Value = Copia.Areas(j).Value 'se basta copiare i valori
          Copia.Areas(j).Copy Destination:=incolla.Areas(j)  'per copiare tutto
        Next j
      Next i
      
      Set wsFrom = Nothing
      Set wsTo = Nothing
      Set Copia = Nothing
      Set incolla = Nothing
    End Sub
    



  • di patel data: 04/02/2014 19:44:43

    prova così
     
    Sub Esempio()
    Sheets(1).Select
    For i = 2 To 4
      Set Copia = Application.Union(Range(Cells(i, 1), Cells(i, 4)), Cells(i, 6))
      Copia.Copy Sheets(2).Cells(i, 1)
    Next
    End Sub
    






  • di scossa data: 04/02/2014 19:56:48

    @patel: col tuo codice le celle copiate (non contigue) vengono incollate in un celle "contigue".



  • di scossa data: 04/02/2014 19:57:19

    P.S.: ciao!!



  • di patel data: 04/02/2014 21:09:38

    Ciao scossa, hai ragione, devo aver capito male





  • di Zer0Kelvin data: 06/02/2014 03:39:45

    Ciao.
    Abbiamo visto che è possibile farlo, e che comunque era un quesito solo teorico; ma, all'atto pratico, penso che il gioco non valga la candela e sia meglio tenersi le tre righe iniziali.



  • di mela (utente non iscritto) data: 06/02/2014 10:25:27

    Sì infatti l'avevo notato anche io che alla fine il programma si complica e si allunga facendo così, e forse per poche celle non ne vale la pena. .. approfitto di questa risposta anche per ringraziare tutti voi per i preziosi suggerimenti. .. non ho avuto tempo e modo per farlo prima. ..:P Grazie! :)