VB & Excel: Ciclo For Interno non finisce!!

giovedì 14 settembre 2006 - 10.56

real Profilo | Newbie

Ciao,

Ho un foglio excel contenente un insieme di intervalli temporali (es. 8.00 | 10.00 | 1.00 ossia dalle 8.00 alle 10.00 dividete in gruppi di 1 ora). Devo riempire un secondo foglio excel con questi intervalli temporali divisi per il tempo (es. 1.00). Gli insiemi di intervalli temporali sono divisi per giorni (per cui devo ciclare per gruppi di colonne).

Ho creato il seguente codice VB:

foglioA = "Inserimento Orari"
foglioB = "Visualizzazione Orari"

' cnt2 contatore colonne foglio A
For cnt2 = 0 To 6

'cnt1 contatore righe del foglio A
cnt1 = 2
conta = 1

While (Sheets(foglioA).Cells(cnt1, 1 + 3 * cnt2).Value <> "")

oraInizio = Sheets(foglioA).Cells(cnt1, 1 + 3 * cnt2).Value
oraFine = Sheets(foglioA).Cells(cnt1, 1 + 3 * cnt2 + 1).Value

break = Sheets(foglioA).Cells(cnt1, 1 + 3 * cnt2 + 2).Value
diffOre = oraFine - oraInizio
numRighe = (diffOre / break)

'scorro le righe del foglio b derivanti dalla riga cnt1 del foglio A
j = 0 For cnt = 1 To numRighe
Sheets(foglioB).Cells(cnt + conta, 1 + cnt2 * 2).Value = oraInizio + (cnt - 1) * break
Sheets(foglioB).Cells(cnt + conta, 1 + cnt2 * 2).NumberFormat = "hh.mm"
Sheets(foglioB).Cells(cnt + conta, 1 + cnt2 * 2 + 1).Value = oraInizio + (cnt) * break
Sheets(foglioB).Cells(cnt + conta, 1 + cnt2 * 2 + 1).NumberFormat = "hh.mm"
Next cnt

conta = conta + numRighe
cnt1 = cnt1 + 1
Wend

Next cnt2

Quello che succede è: il primo ciclo del for interno (su cnt) viene eseguito completamente e scrive tutte le righe. Dal secondo ciclo in poi, il for interno scrive tutte le righe meno l'ultima!!! Qualcuno ha qualche idea?!?!

Grazie,
Alexandra

Brainkiller Profilo | Guru

>Quello che succede è: il primo ciclo del for interno (su cnt)
>viene eseguito completamente e scrive tutte le righe. Dal secondo
>ciclo in poi, il for interno scrive tutte le righe meno l'ultima!!!
>Qualcuno ha qualche idea?!?!

Ciao Alexandra,
direi che la cosa più facile perchè tu capisca dove sta l'errore sia usare il Debugger che è stato creato per questo. Metti dei Breakpoint nel codice, manda in esecuzione e vai avanti passo passo verificando con il Quick Watch il valore delle celle e delle variabili.

Verifica inoltre che nel foglio sorgente non ci siano celle o righe nascoste che ti possono indurre in errore, perchè a vista non le vedi ma in realtà ci sono (nascoste).
Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5