Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Selezionare range

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Selezionare range

Postdi elios66 » 04/02/14 18:39

Ciao a tutti,
sono nuovo e desidero avere il vostro aiuto.
Ho un file Excel in un foglio ho delle categorie disposte per riga es: cod, titolo, sigla - cod, titolo, sigla - ecc
con di sotto i vari articoli. Tramite vba desidero copiarle in un altro foglio ma una sotto l'altra.
es:
cod, titolo, sigla
art1
art2
ecc
cod, titolo, sigla
art1
art2
art3
ecc
ecc

Codice: Seleziona tutto
Sub Aggiorna_Modello()

colonna = 1
j = 1
Application.ScreenUpdating = False
Sheets("ModelloMese").Visible = True
   
    Sheets("ModelloMese").Select
    Range("A2").Select
    Selection.End(xlDown).Offset(0, 2).Select
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
   
Sheets("Pubblicazioni").Visible = True
Sheets("Pubblicazioni").Select

Do Until Sheets("Pubblicazioni").Cells(j, colonna) = Empty
    Cells(j, colonna).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.Offset(0, 2)).Select
    Selection.Copy
    Sheets("ModelloMese").Select
    Range("A2").Select
    If Range("A2").Value = "" Then GoTo 20
    Selection.End(xlDown).Offset(1, 0).Select
20  ActiveSheet.Paste
colonna = colonna + 4

Loop
Aggiorna_ws1

End Sub


Questo è il codice che sto usando al momento ma mi da errore alla riga 20
Vi ringrazio per l'aiuto che vorrete darmi.
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Sponsor
 

Re: Selezionare range

Postdi ricky53 » 04/02/14 19:24

Ciao,
con l'istruzione
Codice: Seleziona tutto
        Selection.End(xlDown).Offset(1, 0).Select

tu lo fai andare giù fino alla prima cella con dati ma evidentemente, nella colonna, dopo la riga selezionata non ci sono altri dati ed arriva fino a fine foglio e poi gli chiedi di spostarsi una riga in basso e va fuori foglio

Prova con quest'altra istruzione
Codice: Seleziona tutto
        Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Selezionare range

Postdi elios66 » 05/02/14 11:24

Ciao Ricky,
grazie per la risposta.
Ho provato il tuo codice, ma mi da errore alla riga 20 dicendo che le aree di copia/incolla non sono uguali.
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 11:57

Immagine

Questo è il foglio Pubblicazione da cui prende i dati dalle colonne
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi ricky53 » 05/02/14 11:59

Ciao,
non hai inserito correttamente il link al tuo file.


Ho qualche dubbio su come sono organizzati i dati ... e premesso che il tuo codice fa delle cose che non servono ed utilizza Select che non dovrebbero utilizzarsi che potrebbero essere la causa di errori ... VORREI ma non ho il tempo di riorganizzarti il codice, quindi, ti invio una semplice modifica (aggiunta di .Sekect al foglio "Pubblicazioni") al tuo codice
Codice: Seleziona tutto
Do Until Sheets("Pubblicazioni").Cells(j, colonna) = Empty
    Sheets("Pubblicazioni").Select ' <<===== AGGIUNTA ADESSO
    Cells(j, colonna).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.Offset(0, 2)).Select
    Selection.Copy
    Sheets("ModelloMese").Select
    Range("A2").Select
    If Range("A2").Value = "" Then GoTo 20
'    Selection.End(xlDown).Offset(1, 0).Select ' <<===== TOLTA
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select ' <<===== AGGIUNTA PRIMA
20  ActiveSheet.Paste
colonna = colonna + 4

Loop


Io ho provato su un file che mi sono auto costruito ricavando l'organizzazione dei dati dal codice ... con quanto ne potrebbe seguire, però non ho avuto errori ed ha copiato tre colonne ogni ciclo del loop.

Provalo e ... sono QUI
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Selezionare range

Postdi elios66 » 05/02/14 12:02

[imgImmagine][/img]
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi ricky53 » 05/02/14 12:10

Ciao,
hai provato la macro con il codice che ho aggiunto ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Selezionare range

Postdi elios66 » 05/02/14 12:20

Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 12:22

si ho provato ma non copia.
ho postato il foglio ModelloMese
così ti puoi rendere conto.
Grazie
se vuoi ti posto il file completo, ma dimmi come fare
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 12:28

http:/..
ecco il link al file
Ultima modifica di elios66 su 05/02/14 12:38, modificato 1 volte in totale.
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 12:33

Fatto! Funziona, grazie :D
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 12:48

Ora però l'errore me lo fa in questa macro

Codice: Seleziona tutto
Sub Aggiorna_ws1()
...
colonna = 1
j = 2
Do Until Sheets("Pubblicazioni").Cells(j, colonna) = Empty
Sheets("Pubblicazioni").Visible = True
    Sheets("Pubblicazioni").Select
    Cells(j, colonna).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.Offset(0, 2)).Select
    Selection.Copy
    Sheets("Foglio1").Select
    Range("g2").Select
    If Range("g2").Value = "" Then GoTo 20
    'Selection.End(xlDown).Offset(1, 0).Select
    Range("G" & Rows.Count).End(xlUp).Offset(1, 0).Select
20    ActiveSheet.Paste
colonna = colonna + 4

Loop
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 13:02

Adesso non lo fa più. MISTERO.
Ma se puoi aiutarmi. Nella form vedi che ci sono due listbox cliccando sulle varie voci della listbox1 mi dice: "Errore di run time 380:
Impossibile impostare la proprietà ListIndex. Valore della proprietà non valido."
Come posso fare?
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 13:08

Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 13:10

Immagine
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi ricky53 » 05/02/14 17:40

Ciao,
invia il codice utilizzato ed evidenzia l'istruzione che va in errore
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Selezionare range

Postdi elios66 » 05/02/14 17:46

Codice: Seleziona tutto
Option Explicit
Dim posiz As Integer, p As Integer, i As Integer, art


Private Sub UserForm_Initialize()

    Dim intIndex As Integer

    ListBox1.RowSource = ("Setup!H1:H101")
    ListBox2.RowSource = ("Setup!H1:H101")

    ListBox1.TopIndex = ListBox1.ListCount - 1
    ListBox2.TopIndex = ListBox1.ListCount - 1
    ScrollBar1.Max = 26 - (ListBox1.ListCount - ListBox1.TopIndex)
    ScrollBar2.Max = 26 - (ListBox1.ListCount - ListBox1.TopIndex)
    ListBox1.TopIndex = 0
    ListBox2.TopIndex = 0
    With Frame1
        .BorderStyle = fmBorderStyleNone
        .Height = ListBox1.Height
        .Width = ListBox1.Width - 15
    End With
    With Frame2
        .BorderStyle = fmBorderStyleNone
        .Height = ListBox1.Height
        .Width = ListBox1.Width - 15
    End With
    ScrollBar1.Top = Frame1.Top
    ScrollBar2.Top = Frame2.Top
    ScrollBar1.Height = Frame1.Height
    ScrollBar2.Height = Frame2.Height
    ScrollBar1.Left = Frame1.Left + Frame1.Width
    ScrollBar2.Left = Frame2.Left + Frame1.Width
End Sub

Private Sub ListBox1_Change()
  Dim list1, list2
  list1 = ListBox1.ListIndex
  ListBox2.TopIndex = ListBox1.TopIndex
  ListBox2.ListIndex = list1   '<-----------------------------QUESTA DA ERRORE
End Sub


Private Sub ListBox2_Change()
  Dim list1, list2
  list1 = ListBox2.ListIndex
  ListBox1.TopIndex = ListBox2.TopIndex
  ListBox1.ListIndex = list1
End Sub

Private Sub ScrollBar1_Change()
    ListBox1.TopIndex = ScrollBar1.Value
    ScrollBar2.Value = ScrollBar1.Value
End Sub

Private Sub ScrollBar2_Change()
    ListBox2.TopIndex = ScrollBar2.Value
    ScrollBar1.Value = ScrollBar2.Value
End Sub
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi ricky53 » 05/02/14 18:12

Ciao,
probabilmente tu stai impostando le righe della Listbox2 con un valore troppo grande (quello che hai selezionato con la "ListBox1").

Controlla: RowSource di entrambi e vedi che riga hai selezionato.


Prova a selezionare la seconda riga della "ListBox1" e ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Selezionare range

Postdi elios66 » 05/02/14 21:02

Ciao
ho notato che da errore quando seleziono l'ultima voce della listbox1 e poi seleziono un'altra voce. Non ho capito bene cosa volevi dire tu, ho diminuito il range del RowSource da 101 a 20, ma non funziona.
Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Re: Selezionare range

Postdi elios66 » 05/02/14 21:16

Win 8 - Office 2010

http://www.filedropper.com/
elios66
Utente Junior
 
Post: 48
Iscritto il: 04/02/14 18:32

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Selezionare range":


Chi c’è in linea

Visitano il forum: Zer0Kelvin e 3 ospiti