Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con "do..loop" in VBA , please help !

Salve a tutti.
Ho un problema "incomprensibile" !!!
Ho scritto due righe di codice, utilizzando VBA per Excel, per disporre
tutto il contenuto delle celle di una colonna (da 1 a 65520) in senso
orizzontale (riga) a gruppi di 63.
In pratica, per farvi capire meglio ... : da  (A1:A65520)  a  (A1:BK1040).
Il problema e' che ad un certo punto dell'esecuzione si blocca tutto,
costringendomi a fare il classico CTRL+ALT+CANC per sbloccare il sistema.
La cosa interessante (se cosi' si puo' dire) e' che da quel momento in poi,
le prestazioni del sistema appaiono rallentate al punto che devo riavviare
windows per tornare alle condizioni normali.
Ho notato che questo blocco si verifica sempre quando la variabile 'posriga'
raggiunge valori abbastanza elevati : da 60000 in su oppure da 40000 in su.
Di seguito vi trascrivo il programma incriminato.
Vi prego di avere pieta' di me per " l'artigianalita'" del codice, ma
l'ultima volta che ho programmato era con il basic del Commodore 64 (pace
all'anima sua) !!!
Grazie a tutti
Aldo
---------------------------------------------------------------------
Sub sposta()
dim posriga as long
dim posrigacopia as integer
dim a as integer
dim rifcol1$ as string
posrigacopia = 1
posriga = 1
Do
For a = 1 To 26
rifcol1$ = Chr$(a + 64)
Range("a" & posriga).Select
Selection.Cut Destination:=Range(rifcol1$ & posrigacopia)
posriga = posriga + 1
Next a
For a = 1 To 26
rifcol1$ = "a" + Chr$(a + 64)
Range("a" & posriga).Select
Selection.Cut Destination:=Range(rifcol1$ & posrigacopia)
posriga = posriga + 1
Next a
For a = 1 To 11
rifcol1$ = "b" + Chr$(a + 64)
Range("a" & posriga).Select
Selection.Cut Destination:=Range(rifcol1$ & posrigacopia)
posriga = posriga + 1
Next
posrigacopia = posrigacopia + 1
Loop While posriga < 65535
End Sub

A colpo d'occhio il problema e' nella dichiarazione di posrigacopia,
dichiarala di tipo long,
una seconda osservazione, aggiungi dentro il do-loop un doevents, questo per
evitare che il
sistema dia l'impressione di essere bloccato e per permettergli il refresh
delle finestre.
P.S.
Internet e' pieno di siti per il mitico C64, non e' cosi' morto come sembra.


Confermo... e c'e pure un pazzo che e' riuscito a portare un clone di
linux sul 64...
Si chiama Lunix...
-- 
Sidewinder  
---------------------------------------------------------------------
When in doubt, tell the truth.
		-- Mark Twain
---------------------------------------------------------------------

 delle finestre.


 Di seguito vi trascrivo il programma incriminato.
[...]
Prova cosi`, forse funziona:
Option Explicit
Sub Prova1( _
)
  '
  Const lngStep& = 1040
  Const lngFstRow& = 1
  Const lngLstRow& = 65520
  Const intFstCol& = 1
  '
  Dim lngRow&
  Dim intCol%
  '
  With Excel.Application.ActiveSheet
    Let intCol = intFstCol
    For lngRow = lngFstRow + lngStep To lngLstRow Step lngStep
      Let intCol = intCol + 1
      Call .Cells.Range( _
          .Cells(lngRow, intFstCol) _
        , .Cells(lngRow + lngStep - 1, intFstCol)) _
        .Cut(.Cells(lngFstRow, intCol))
    Next
  End With
End Sub
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

 ha scritto nel messaggio
news:8mdmmd$2bf$6...@nslave1.tin.it...


 Inutile dirti che ti sarei veramente molto grato se potessi
realizzare la Vers. 1.1 del programma :-) , rivedendo il
codice che hai realizzato, per farlo funzionare come avrei
bisogno.
Piu` tardi vedo cosa posso fare. Che ne dici, intanto, di
provare tu, se questi ultimi chiarimenti ti sono stati
utili...





 ha scritto nel messaggio
news:6qOk5.49516$dF5.9...@news.infostrada.it...


 wrote in message
plTk5.50879$dF5.9...@news.infostrada.it...


 e PROPRIETA' dell'OGGETTO ActiveSheet. Invece che usare la sintassi
---cut---
Grazie per la spiegazione chiara e professionale !
Fai il programmatore, di lavoro, forse ?
Ringraziandoti nuovamente per l'aiuto che mi hai dato, colgo l'occasione per
augurarti buone ferie !
Ciao
Aldo
P.S.
Complimenti per la firma finale !