excel vba selezionare righe



  • excel vba selezionare righe
    di nabonedo (utente non iscritto) data: 01/11/2012 09:05:07

    Ciao,
    ho un problema.
    Mi servirebbe una macro che quando seleziono una riga nel foglio1 mi
    sposta il contenuto in determinate celle del foglio2.
    le righe del foglio 1 sono un centinaio circa, quindi presumo che debba
    esserci un ciclo.

    Saluti e grazie.



  • di HarryBosch data: 01/11/2012 10:36:18

    Ciao Nabonedo
    ti serve una macro che sposti i dati del foglio1 nel foglio2, fin qua ok; però non è chiaro in che modo:
    - "quando seleziono una riga..": in questo caso, ti posizioni su una cella della riga, ed essa si copia (quindi, una riga alla volta, solo quando ci clicchi sopra);
    - "..presumo debba esserci un ciclo": questa è un'altra situzione: lanci la macro, passi tutte le righe del foglio1, e quelle che rispettano un determinato criterio, vengono ricopiate nel foglio2

    Quale delle due situazioni vorresti realizzare? Versione Excel che utilizzi? Conosci qualcosa del vba?



  • di Vecchio Frac data: 01/11/2012 11:07:56

    A quanto dice HarryBosch aggiungo come alternativa:
    - dopo aver pensato bene esattamente a quel che devi fare, passo per passo (magari te lo scrivi su un foglio),
    - avvia un registratore di macro,
    - fai esattamente le operazioni che faresti manualmente, evitando operazioni superflue che verrebbero registrate,
    - controlla il codice,
    - correggi e ripulisci il codice.




  • excel vba selezionare righe
    di nabonedo (utente non iscritto) data: 01/11/2012 14:04:43

    Ciao
    Volevo ringraziarvi per la disponibilità

    Ad HarryBosch:
    mi spiego meglio:
    ho un db con una serie d'informazioni nel foglio1, diciamo 100 righe
    popolate.
    Mi servirebbe una macro che quando seleziono tutta la riga le informazioni della riga stessa
    vadano in determinate celle del foglio2; seleziono un'altra riga e le informazioni di quest'ultima si sotituiscono
    a quelle precedenti nel foglio2..e così via.
    Saluti.



  • di nabonedo (utente non iscritto) data: 01/11/2012 23:16:51

    c'è qualcuno che mi aiuta?



  • di HarryBosch data: 02/11/2012 00:20:15

    Allora, da quanto ho capito, nello stesso momento in cui selezioni una riga del foglio1 i dati della stessa si devono copiare in determinate celle del foglio2.
    Prova la routine che ti scrivo qua sotto: se selezioni una cella della colonna A oppure la riga intera, tutti i dati della riga selezionata si sposteranno nella riga1 del foglio2. Poi ti si aprirà il foglio2.

    Il codice va inserito nel modulo del Foglio1 e non in un modulo normale.

    Resta da capire in quali celle del foglio2 questi dati si devono eventualmente spostare. Se spieghi esattamente vediamo di sistemare.

     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
            On Error Resume Next
            Target.EntireRow.Copy Destination:=Sheets("Foglio2").[a1]
            'per spostarsi sul foglio dove copi la riga dopo la selezione
            Sheets("Foglio2").Select
    End Sub
    



  • di nabonedo (utente non iscritto) data: 02/11/2012 08:54:45

    Ciao HarryBosch,
    di seguito la corrispondenza campi foglio1/foglio2:
    foglio1 foglio2
    a1 b1
    b1 b2
    c1 g3
    d1 c3
    e1 a3
    f1 a4
    g1 d4
    Ciao e grazie



  • di HarryBosch data: 02/11/2012 13:15:14

    Ciao nabonedo
    non hai più detto la versione Excel che usi.
    Ti allego un file Excel versione 2007; basta selezionare una riga oppure una cella della colonna A e i dati si sposteranno sul foglio2 nelle posizioni che hai indicato.

    Verifica se effettivamente ottieni il risultato che ti aspetti



  • di nabonedo (utente non iscritto) data: 02/11/2012 15:02:11

    excel 2003

    Saluti



  • di HarryBosch data: 02/11/2012 20:07:59

    Inserisci il codice sotto nel modulo del Foglio 1.
    Solo nel momento in cui selezioni la riga intera, i dati della relativa riga verranno copiati nel foglio2 che verrà anche aperto.

     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim r As Integer
        If Intersect(Target, Columns(256)) Is Nothing Then Exit Sub
        r = Target.Row
        With Sheets("Foglio2")
            .[b1] = Cells(r, 1)
            .[b2] = Cells(r, 2)
            .[g3] = Cells(r, 3)
            .[c3] = Cells(r, 4)
            .[a3] = Cells(r, 5)
            .[a4] = Cells(r, 6)
            .[d4] = Cells(r, 7)
            .Select
        End With
    End Sub
    



  • di nabonedo (utente non iscritto) data: 03/11/2012 00:07:12

    Grazie HarryBosch.

    E' proprio quello che mi serviva.

    Saluti



  • di Vecchio Frac data: 03/11/2012 17:53:05

    Allora puoi spuntare la casella "Spunta se risolta" in una nuova risposta, grazie.





  • di nabonedo (utente non iscritto) data: 04/11/2012 00:21:02

    Ciao e grazie