Condividi:        

Casella di selezione in vba come fare?

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

Casella di selezione in vba come fare?

Postdi papiriof » 02/05/17 18:16

Ho una casella di selezione in un foglio cambiando il valore in essa contenuto cambiano altri valori(formule) contenuti nel foglio. Quello che vorrei fare è realizzare in vba questa operazione: copiare un intervallo che cambia (al variare della casella di selez.) per poi incollarlo accodandolo in altra parte del foglio. Usando il registratore è venuto fuori un misero "calculate" :oops:
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: Casella di selezione in vba come fare?

Postdi alfrimpa » 02/05/17 18:46

Ciao Papiriof

Allega un file di esempio con dati, spiegazione e risultato desiderato inserito a mano.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Casella di selezione in vba come fare?

Postdi papiriof » 03/05/17 16:15

Allego il file , cosa dovrebbe fare la macro? come prima operazione dovrebbe registrare il valore in AN1 (nome :"piu")con il val 1 e incollare questo 1 in BN3 successivamente copiare l'intervallo AT453:BJ453 (sono formule e come tali cambiano in relazione alla casella di selezione)e incollarlo solo valori il BO3.Ripetere tuttele operazioni su descritte dove AN1 ha il valore "2" incollarlo questa volta in BN4 di seguito copiare sempre l'intervallo AT453:BJ453 che nel frattempo ha altri valori a seguito del cambiamento
della cella AN1 e incollarlo in BO4 solo valori, queste operazioni ripeterle fino a quando AN1 assume il valore 42.
Si tenga presente che la macro solo adesso copierà l'intervallo AT453:BJ453 perchè attualmente la riga 453 è l'ultima con gli aggiornamenti fermo restanti leoperazioni descritte l'intervallo AT453:BJ453 cambierà in AT454:BJ454 ,ho lasciato le colonne inizio e fine intervallo vuote per utilizzare eventualmente currentregion ultima riga (forse dico una cavolata?)
http://www.filedropper.com/svizz23
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Casella di selezione in vba come fare?

Postdi Anthony47 » 03/05/17 21:40

Allego il file , cosa dovrebbe fare la macro? come prima operazione dovrebbe registrare il valore in AN1 (nome :"piu")con il val 1 e incollare questo 1 in BN3 successivamente copiare l'intervallo AT453:BJ453 (sono formule e come tali cambiano in relazione alla casella di selezione)e incollarlo solo valori il BO3.Ripetere tuttele operazioni su descritte dove AN1 ha il valore "2" incollarlo questa volta in BN4 di seguito copiare sempre l'intervallo AT453:BJ453 che nel frattempo ha altri valori a seguito del cambiamento
della cella AN1 e incollarlo in BO4 solo valori, queste operazioni ripeterle fino a quando AN1 assume il valore 42.
Si tenga presente che la macro solo adesso copierà l'intervallo AT453:BJ453 perchè attualmente la riga 453 è l'ultima con gli aggiornamenti fermo restanti leoperazioni descritte l'intervallo AT453:BJ453 cambierà in AT454:BJ454 ,ho lasciato le colonne inizio e fine intervallo vuote per utilizzare eventualmente currentregion ultima riga (forse dico una cavolata?)

Mi sono perduto...
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Casella di selezione in vba come fare?

Postdi papiriof » 03/05/17 22:21

Lo so , mi sono spiegato male,quello che posso aggiungere è che alla fine dell' auspicata macro dovrei avere popolato un intervalo BN2:CE44 la prima riga del quale(BN2:CE2) rappresenta le etichette già stampate. Nella colonna BN apartire da BN3 fino a Bn44 i numeri da 1 a 42 quindi la prima riga dopo le etichette sarà;
1 13 9 51 7 7 13 39 5 185 44 16 9 44 44 7 493 5
2
3
ecc .... ultima riga....
42 88 81 3 52 81 51 45 33 123 117 34 22 45 99 147 1021 3
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Casella di selezione in vba come fare?

Postdi papiriof » 15/05/17 16:50

E' che non riesco a spiegarmi .. perchè alla fine con l'aiuto del registratore na macro che fa quello che volevo sono riuscito a farla ma come suol dirsi "Non si può vedè" perciò cambio la richiesta :come trasformare la sottonotata macro con tanto di Dim... Cicli For e quant'altro :oops: . Il codice che segue è parziale arriva fino a 3 ma tanto fa sempre la stessa cosa terminando con 42:
Codice: Seleziona tutto
Sub Macro4()
'     
Application.ScreenUpdating = False
 Range("BO3:CE44").Select    'Cancello le righe dove si piazzeranno le nuove righe (42)
    Selection.ClearContents
   
    Range("AN1").Select 'seleziono AN1
    ActiveCell.FormulaR1C1 = "1" 'quindi la cella attiva  assume il valore 1
    Range("AT451:BJ451").Select ' in conseguenza del val 1 nella cella AN1 l'intervalloAT451:BJ451( formule) assumerà valori 'diversi  con il cambiamento di AN1   
    Selection.Copy  'e lo copio   .....
    Range("BO3").Select  'seleziono La cella BO3 dove si piazzerà l''intervallo composto da 17 celle precedentemente copiate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False  ' in BO3  ... solo valori
   
    Range("AN1").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("AT451:BJ451").Select
    Selection.Copy
    Range("BO4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
   
    Range("AN1").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("AT451:BJ451").Select
    Selection.Copy
    Range("BO5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 '.......... ecc
'......... ecc
   
    Range("AN1").Select
    ActiveCell.FormulaR1C1 = "42"
    Range("AT451:BJ451").Select
    Selection.Copy
    Range("BO44").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
   
  Application.ScreenUpdating = True
 
End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Casella di selezione in vba come fare?

Postdi Anthony47 » 16/05/17 01:14

Ha ah, ma allora e' semplice. Prova
Codice: Seleziona tutto
Sub Macro4Bis()
'
Application.ScreenUpdating = False
Range("BO3:CE44").ClearContents    'Cancello le righe dove si piazzeranno le nuove righe (42)

For I = 1 To 42
    Range("AN1").Value = I
''    Range("AN1").Select 'seleziono AN1
''    ActiveCell.FormulaR1C1 = "1" 'quindi la cella attiva  assume il valore 1
    Range("AT451:BJ451").Copy ' in conseguenza del val 1 nella cella AN1 l'intervalloAT451:BJ451( formule) assumerà valori 'diversi  con il cambiamento di AN1
''    Selection.Copy  'e lo copio   .....
''    Range("BO3").Select  'seleziono La cella BO3 dove si piazzerà l''intervallo composto da 17 celle precedentemente copiate
    Range("BO3").Offset(I - 1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False  ' in BO3  ... solo valori
Next I
Application.ScreenUpdating = True
End Sub
Ci sono molte righe "commentate", per mettere in evidenza alcune delle modifiche apportate; si possono eliminare.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Casella di selezione in vba come fare?

Postdi papiriof » 16/05/17 08:00

Anthony47 ha scritto:Ha ah, ma allora e' semplice. Prova
Codice: Seleziona tutto
Sub Macro4Bis()
'
Application.ScreenUpdating = False
Range("BO3:CE44").ClearContents    'Cancello le righe dove si piazzeranno le nuove righe (42)

For I = 1 To 42
    Range("AN1").Value = I
''    Range("AN1").Select 'seleziono AN1
''    ActiveCell.FormulaR1C1 = "1" 'quindi la cella attiva  assume il valore 1
    Range("AT451:BJ451").Copy ' in conseguenza del val 1 nella cella AN1 l'intervalloAT451:BJ451( formule) assumerà valori 'diversi  con il cambiamento di AN1
''    Selection.Copy  'e lo copio   .....
''    Range("BO3").Select  'seleziono La cella BO3 dove si piazzerà l''intervallo composto da 17 celle precedentemente copiate
    Range("BO3").Offset(I - 1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False  ' in BO3  ... solo valori
Next I
Application.ScreenUpdating = True
End Sub
Ci sono molte righe "commentate", per mettere in evidenza alcune delle modifiche apportate; si possono eliminare.

Ciao

Ottimo Anthony , mi pareva strano che non avessi capito :!: :!: Ora ti chiedo nel nodulo troviamo l'istruzione " Range("AT451:BJ451").Copy" , quando faccio delle prove nella macro mia che facevo SOSTITUIsci Range("AT451:BJ451").Copy con Range("AT450:BJ450").Copy ora e un po più semplice
ma devo andare sempre nel modulo , c'è la possibilità di governare l'operazione dal foglio; che so nella cella cj2 metto 445 e gli do un nome(per richiamarlo nella macro) così mi rendo conto a che estrazione si riferisce lo scenario della macro generata ?!
Intanto grazie per quello già fatto.
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Casella di selezione in vba come fare?

Postdi Anthony47 » 16/05/17 21:05

Ottimo Anthony , mi pareva strano che non avessi capito :!: :!:
Guarda che proprio non avevo capito...

Ora ti chiedo nel nodulo troviamo l'istruzione " Range("AT451:BJ451").Copy" , quando faccio delle prove nella macro mia che facevo SOSTITUIsci Range("AT451:BJ451").Copy con Range("AT450:BJ450").Copy ora e un po più semplice
ma devo andare sempre nel modulo , c'è la possibilità di governare l'operazione dal foglio; che so nella cella cj2 metto 445 e gli do un nome(per richiamarlo nella macro) così mi rendo conto a che estrazione si riferisce lo scenario della macro generata ?!
Intanto grazie per quello già fatto.

Ecco, ci risiamo... Nella tua macro copiavi sempre Range("AT451:BJ451") e incollavi in un'area diversa ciclo dopo ciclo. Che c'entra adesso Range("AT450:BJ450")?

Comunque se vuoi copiare le colonne AT:BJ della riga impostata (mettiamo) in CJ2, allora invece di Range("AT451:BJ451").Copy potresti usare
Codice: Seleziona tutto
Cells(Range("CJ2").Value,"AT").Resize(1, 17).Copy


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Casella di selezione in vba come fare?

Postdi papiriof » 17/05/17 08:29

No, no come al solito mi sono spiegato male :oops: :oops: Provo così: Ora Nella mia macro copio sempre Range("AT451:BJ451") e incollo in un'area diversa ciclo dopo ciclo accodando tutto in BO3...BO4 ecc , bene ! Ma se io volessi copiare sempre Range("AT450:BJ450")invece che il Range("AT451:BJ451") fermo restando tutto il resto come fare?
Attualmente vado dentro il modulo e cambio solo 451 in -----> 450 e allora chiedevo , si può governare questa operazione facendo in modo di non andare sul modulo ma operare dal foglio dove mi appare il risultato della macro? Es.metto in CJ2 il valore 450 con l'ntento di cambiare la macro, CJ2 lo nominerei con "XXX" e la macro avrebbe solo questo piccolo cambiamento Range("AT451:BJ451") diventerebbe Range("AT(XXX):BJ(XXX)") dubito che si possa fare in questo modo era solo per farmi capire :oops: :oops:
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Casella di selezione in vba come fare?

Postdi Anthony47 » 17/05/17 23:30

Ma hai provato?
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Casella di selezione in vba come fare?

Postdi papiriof » 18/05/17 07:13

Anthony47 ha scritto:Ma hai provato?

ho provato ora ma facendo cosi come prospettato mi viene fuori:"Errore run-time '1004' Metodo 'Range' dell'oggetto '_Global' non riuscito"
ecco come con e senza questa riga Range("CJ2").Value = "xxx"
ovviamente dopo aver nominato CJ2 "xxx"

Sub Macro4Bis()
'Range([Q138].Value & ":" & [R138].Value).Select
Application.ScreenUpdating = False
Range("BO3:CE44").ClearContents 'Cancello le righe dove si piazzeranno le nuove righe (42)

For i = 1 To 42
Range("CJ2").Value = "xxx"
Range("AN1").Value = i
'' Range("AN1").Select 'seleziono AN1
'' ActiveCell.FormulaR1C1 = "1" 'quindi la cella attiva assume il valore 1
Range("AT(xxx): BJ(xxx)").Copy ' in conseguenza del val 1 nella cella AN1 l'intervalloAT451:BJ451( formule) assumerà valori 'diversi con il cambiamento di AN1
'' Selection.Copy 'e lo copio .....
'' Range("BO3").Select 'seleziono La cella BO3 dove si piazzerà l''intervallo composto da 17 celle precedentemente copiate
Range("BO3").Offset(i - 1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False ' in BO3 ... solo valori
Next i
Application.ScreenUpdating = True
End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Casella di selezione in vba come fare?

Postdi Anthony47 » 19/05/17 09:25

Perdona, ma quando ho letto la risposta mi e' venuto da sorridere...
Quello che ti chiedo di provare e' il mio suggerimento (16-maggio sera), non il tuo (ancora non recepito da Microsoft ).
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Casella di selezione in vba come fare?

Postdi papiriof » 19/05/17 12:25

Anthony47 ha scritto:Perdona, ma quando ho letto la risposta mi e' venuto da sorridere...
Quello che ti chiedo di provare e' il mio suggerimento (16-maggio sera), non il tuo (ancora non recepito da Microsoft ).
Ciao

A te da sorridere a me da piagne :oops: :oops: :oops: :cry: :cry: :cry: (si fa per dire)stava scritto così bene!!!! con gli anta anta anta anta ci vuole pazienza , comunque sei bravissimo :D :D :D :D :D
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23


Torna a Applicazioni Office Windows


Topic correlati a "Casella di selezione in vba come fare?":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti