Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro non funzionante se varia formato celle

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

macro non funzionante se varia formato celle

Postdi miko » 13/04/10 08:45

salve,
ho un piccolo problema relativo al formato celle.
inizialmente i valori inseriti erano del tipo formato celle-generale, e la macro del calcolo funziona perfettamente.
ho cambiato il formato celle in personalizzato - #.##0 e poi - tipo 0#, ma ora la macro non funziona correttamente perchè non considera i numeri del tipo 01,02,05,09, ma solo i numeri a partire da 10 in poi.
ho provato a vedere nella macro se trovavo qualche riferimento alla formattazione delle celle, ma non c'è niente.
il cambio del formato celle non è così importante, ma vorrei capire perchè lo stesso cambiamento in altre situazioni non ha modificato il calcolo come in qesto caso.
vi invio la macro che esegue delle somme:
Codice: Seleziona tutto
Sub CALCOLA()
Call IMPORTA_dati
Application.ScreenUpdating = True 'False
Application.Calculation = xlCalculationAutomatic 'xlManual
Application.Cursor = xlWait

UR = Worksheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row 'UR conta le righe piene considerando la colonna B
UD = Worksheets("Foglio1").Range("N" & Rows.Count).End(xlUp).Row 'UD conta le righe piene considerando la colonna N

Range("P3:Q" & UD).ClearContents 'cancella il contenuto delle colonne P e Q
    Range("M3:N" & UD).Copy 'copia il contenuto delle colonne M ed N
    Range("P3").Select 'seleziona la cella P3
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False 'incolla il contenuto delle colonne M ed N nelle colonne P e Q
    Application.CutCopyMode = False

Range("M3:N" & UD).ClearContents 'cancella il contenuto delle colonne M ed N

Range("A1").Select 'seleziona la cella A1

StartArr = Range("B3:K" & UR) ' << dimensionare A1:J1000

For r = 3 To UR ' << To 1000
    AppoArr = Range("B" & r & ":K" & r)
    Range("B" & r & ":K" & r).ClearContents
   
    For X = 1 To 10 ' << 10 colonne da A a J
        With Range("B3:K" & UR) ' << dimensionare A1:J1000
            Set f = .Find(AppoArr(1, X), LookIn:=xlValues, lookat:=xlWhole)
            If Not f Is Nothing Then
                firstAddress = f.Address
                Do
                    Range(f.Address).ClearContents
                    Set f = .FindNext(f)
                Loop While Not f Is Nothing
            End If
        End With
      Next X
 
For r1 = 3 To UR ' << To 1000
    Cells(r1, 12) = Application.WorksheetFunction.Sum(Range("B" & r1 & ":K" & r1))
    If Cells(r1, 12).Value = 0 Then Cells(r1, 12).Value = ""
Next r1
   
    Cells(r, 13) = Application.WorksheetFunction.Min(Range("L1:L" & UR)) ' K1000
    Cells(r, 14) = Application.WorksheetFunction.Max(Range("L1:L" & UR)) ' K1000
    Range("L3:L" & UR).ClearContents
Range("B3:K" & UR) = StartArr  ' << dimensionare A1:J1000

Next r

Range("B3:K" & UR) = StartArr  ' << dimensionare A1:J1000
Range("L3:L" & UR).ClearContents

Call Confronta

Range("A1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Cursor = xlDefault
End Sub

ciao grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: macro non funzionante se varia formato celle

Postdi Anthony47 » 13/04/10 16:08

La macro ti va in errore, e se SI dove, o semplicemente non ti restituisce il risultato che ti aspettavi, e se SI quale e' la parte della macro da scrutinare, che risultato ti aspetti e che risultato invece ottieni.

Ciao, fatti sentire.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro non funzionante se varia formato celle

Postdi miko » 14/04/10 15:10

salve,
come dicevo nel post precedente, modificando il formato celle, in modo che da generale si passi a personalizzato - #.##0 e poi - tipo 0#, così i numeri diventano a due cifre, tipo 01, 02, 05.., la macro continua a funzionare ma non restituisce il giusto risultato.
mi sono accorto di questo perchè inserendo questa linea di codice: Application.ScreenUpdating = True
si nota, durante lo sviluppo, che la macro non interviene sui numeri 01, 02, 03,...., 09
ma prende in considerazione solo i numeri a partire dal numero 10 in poi.
quindi se abbiamo ad esempio la riga da B3 a K3 così composta:
01 02 05 08 10 12 15 16 18 20
la macro lavora come se nella riga ci fossero solo i numeri:
10 12 15 16 18 20
per cui il risultato fornito è errato.
credo che il codice interessato sia:
Codice: Seleziona tutto
--------
StartArr = Range("B3:K" & UR)

For r = 3 To UR
    AppoArr = Range("B" & r & ":K" & r)
    Range("B" & r & ":K" & r).ClearContents
   
    For X = 1 To 10
        With Range("B3:K" & UR)
            Set f = .Find(AppoArr(1, X), LookIn:=xlValues, lookat:=xlWhole)
            If Not f Is Nothing Then
                firstAddress = f.Address
                Do
                    Range(f.Address).ClearContents
                    Set f = .FindNext(f)
                Loop While Not f Is Nothing
            End If
        End With
--------
For r1 = 3 To UR
    Cells(r1, 12) = Application.WorksheetFunction.Sum(Range("B" & r1 & ":K" & r1))
    If Cells(r1, 12).Value = 0 Then Cells(r1, 12).Value = ""
Next r1
   
    Cells(r, 13) = Application.WorksheetFunction.Min(Range("L1:L" & UR))
    Cells(r, 14) = Application.WorksheetFunction.Max(Range("L1:L" & UR))
    Range("L3:L" & UR).ClearContents
Range("B3:K" & UR) = StartArr 
------

ma non vi fidate troppo perchè non sono un esperto di macro così complesse, e potrei indicarvi una parte di codice non interessata al problema.
ritengo però, avendo capito le altre linee di codice e dopo aver fatto delle prove commentando alcune linee, che il problema si trova nelle linee che ho evidenziato.
ma non riesco a capire perchè la formattazione a doppia cifra modifichi il funzionamento della macro.
ciao grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: macro non funzionante se varia formato celle

Postdi Flash30005 » 14/04/10 18:28

Prova formattando il campo in questa riga
Codice: Seleziona tutto
            Set f = .Find(Format(AppoArr(1, X), "00"), LookIn:=xlValues, lookat:=xlWhole)


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro non funzionante se varia formato celle

Postdi miko » 14/04/10 18:55

ciao,
ho provato, funziona benissimo.
grazie, saluti
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "macro non funzionante se varia formato celle":


Chi c’è in linea

Visitano il forum: cromagno e 5 ospiti