Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Problema codice macro

Ultimo Aggiornamento: 06/12/2018 16:58
Post: 6
Registrato il: 15/02/2013
Città: MASSANZAGO
Età: 40
Utente Junior
2013
OFFLINE
23/11/2018 13:07

Ciao a tutti!
Vi scrivo per chiedervi un aiuto su una cosa che immagino possa essere molto semplice... scusatemi ma non sono molto pratico di vba. In un excel ho costruito una macro per estrarre dei numeri casuali e mescolarli. Questo è il codice:

Sub Mischia()
'
' Macro1 Macro
'
Randomize
Dim num As Integer
For num = 1 To 5000
Cells(num, 2) = Int(Range("D2") * Rnd) + 1
Next num
'
Columns("A:B").Select
ActiveWorkbook.Worksheets("Selezione Campione").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Selezione Campione").Sort.SortFields.Add Key:=Range("B1:B5000" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Selezione Campione").Sort
.SetRange Range("A1:B5000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("a1").Select
End Sub


Ora quello che vorrei fare è imporre come limite maggiore per l'estrazione dei numeri casuali il valore dato da una cella presente nel foglio excel. Per farmi capire meglio sostituire il 5000 con il riferimento a una cella del foglio nella riga del codice "For num = 1 To 5000".
Grazie mille per l'aiuto
Post: 2.030
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
23/11/2018 15:31

ciao
es: in C1 il limite

Sub Mischia()
limite=range("C1")

...
...
For num = 1 To limite
....
ActiveWorkbook.Worksheets("Selezione Campione").Sort.SortFields.Add Key:=Range("B1:B" & limite _
.....
.....
.SetRange Range("A1:B" & limite)
...

saluti



[Modificato da dodo47 23/11/2018 15:33]
Domenico
Win 10 - Excel 2016
Post: 6
Registrato il: 15/02/2013
Città: MASSANZAGO
Età: 40
Utente Junior
2013
OFFLINE
29/11/2018 11:03

Grazie per il tuo suggerimento però ancora niente non funziona... impostando la macro comi dici tu quando la eseguo mi da il messaggio di errore "Variabile non definita" evidenziando in debug "limite = Range("D2")". Ho provato ad inserire prima della stringa un dim limite as integer ma ancora un nuovo messaggio di errore "Errore di runtime '6': overflow".
In cosa sbaglio?
Post: 2.047
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
29/11/2018 18:55

invia quello che hai fatto e che genera l'errore



[Modificato da dodo47 30/11/2018 13:17]
Domenico
Win 10 - Excel 2016
Post: 7
Registrato il: 15/02/2013
Città: MASSANZAGO
Età: 40
Utente Junior
2013
OFFLINE
04/12/2018 12:03

Sub Mischia()
'
' Limite
'
Dim limite As Integer
limite = Range("D2")
'
' Macro1 Macro
'
Randomize
Dim num As Integer
For num = 1 To limite
Cells(num, 2) = Int(Range("D2") * Rnd) + 1
Next num
'
Columns("A:B").Select
ActiveWorkbook.Worksheets("Selezione Campione").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Selezione Campione").Sort.SortFields.Add Key:=Range("B1:B" & limite _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Selezione Campione").Sort
.SetRange Range("A1:B" & limite)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("a1").Select
End Sub

Grazie mille per l'aiuto
Post: 2.059
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/12/2018 18:33

il codice è formalmente corretto (ed eseguendolo non mi da nessun errore)

Che ci scrivi in D2??? O meglio, sottoponi il tuo file senza dati sensibili

saluti




Domenico
Win 10 - Excel 2016
Post: 8
Registrato il: 15/02/2013
Città: MASSANZAGO
Età: 40
Utente Junior
2013
OFFLINE
06/12/2018 16:58

Ho risolto! Era sbagliato un riferimento all'interno della macro!
Grazie per il supporto
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 10:25. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com