[Risolto] Macro non funzionante

Discussioni sull'applicazione per i fogli di calcolo
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

[Risolto] Macro non funzionante

Messaggio da theirish »

Ciao a tutti, sono alle prese con una macro tradotta da excel che non riesco a far funzionare con LO. La macro serve per un controllo finale delle somme e dei prodotti. Allego il file con la macro e chiedo se qualcuno può gentilmente aiutarmi. Per qualsiasi ulteriore chiarimento chiedete pure. Grazie.

Questa è la macro all'interno del file Calc

Codice: Seleziona tutto

REM Attribute VBA_ModuleType=VBAModule

Option VBASupport 1
Option Compatible

Dim importo(1 To 1000) As Double, quantita(1 To 1000) As Double, nummax As Integer, numaart As Integer, somma As Double
 
 
 Sub estraisomma()

     nummax = Cells(1, 19)
     numart = Cells(2, 19)
     For i = 1 To numart
          quantita(i) = 0
          importo(i) = 0
     Next i
    i = 1
     While i <= nummax
         If (IsNumeric(Cells(i, 2)) And Cells(i, 2) <> "") Then
             j = Cells(i, 2)
         End If
         If (IsNumeric(Cells(i, 12)) And (IsNumeric(Cells(i, 14)) And Cells(i, 14) <> "")) Then
                 importo(j) = importo(j) + Cells(i, 16)
                 quantita(j) = quantita(j) + Cells(i, 12)
          End If
         i = i + 1
     Wend
         For i = 1 To numart
         Cells(i, 20) = i
         Cells(i, 21) = quantita(i)
         Cells(i, 22) = Worksheets("Elenco prezzi").Cells(11 + i * 3 - 2, 6)
         Cells(i, 23) = Cells(i, 21) * Cells(i, 22)
         Cells(i, 24) = importo(i)
         If Abs(Cells(i, 24) - Cells(i, 23)) > 1000 Then
                     Cells(i, 20).Select
                     Beep
                     MsgBox ("Errore")
         End If
 
     Next i
 
 End Sub
 
 Sub controllasomme()
 
     nummax = Cells(1, 19)
     numart = Cells(2, 19)
          somma = 0
          j = 0
    i = 1
     While i <= nummax
         If (IsNumeric(Cells(i, 2)) And Cells(i, 2) <> "") Then
             somma = 0
         End If
        
         If (Cells(i, 4) = "") And ((Cells(i, 6) = "") And (Cells(i, 8) = "") And (Cells(i, 10) = "") And (IsNumeric(Cells(i, 12)) And Cells(i, 12) <> "")) Then
                 Cells(i, 19) = somma
                 If (Abs(somma - Cells(i, 12)) > 0.005) And (somma <> 0) Then
                     Cells(i, 12).Select
                     Beep
                     MsgBox ("Errore di somma")
                 End If
                 
         End If
         If (IsNumeric(Cells(i, 12)) And Cells(i, 12) <> "") Then
                 somma = somma + Cells(i, 12)
                 Cells(i, 12).Select
         End If
         
         i = i + 1
         j = j + 1
     Wend
 End Sub
 Sub controllaprodotti()
 
     nummax = Cells(1, 19)
     numart = Cells(2, 19)
    i = 1
     While i <= nummax
         prodotto = 0
         If (IsNumeric(Cells(i, 12)) And (Cells(i, 12) <> "")) Then
             If (((IsNumeric(Cells(i, 4)) Or (Cells(i, 4) = ""))) And ((IsNumeric(Cells(i, 6)) Or (Cells(i, 6) = ""))) And ((IsNumeric(Cells(i, 8)) Or (Cells(i, 8) = "")) And (IsNumeric(Cells(i, 10)) Or (Cells(i, 10) = "")))) Then
                 Cells(i, 12).Select
                 If Cells(i, 4) <> "" Then a = Cells(i, 4) Else a = 1
                 If Cells(i, 6) <> "" Then b = Cells(i, 6) Else b = 1
                 If Cells(i, 8) <> "" Then c = Cells(i, 8) Else c = 1
                 If Cells(i, 10) <> "" Then d = Cells(i, 10) Else d = 1
                  prodotto = a * b * c * d
                 If (Abs(prodotto - Cells(i, 12)) > 0.005) And ((Cells(i, 4) <> "") Or (Cells(i, 6) <> "") Or (Cells(i, 8) <> "") Or (Cells(i, 10) <> "")) Then
                     Cells(i, 12).Select
                     Cells(i, 18) = prodotto
                     Beep
                     MsgBox ("Errore di prodotto")
                 End If
             End If
         End If
         i = i + 1
     Wend
 End Sub
Allegati
Computo metrico.ods
(71.32 KiB) Scaricato 92 volte
Ultima modifica di theirish il martedì 13 novembre 2018, 16:01, modificato 2 volte in totale.
LibreO 7.2.0.4
MacOS 10.11.6
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro non funzionante

Messaggio da Eramad »

Ciao.

2 appunti veloci per aiutare chi ti aiuta ;)

- Il codice devi scriverlo in mezzo ai tag e non dopo.
- Puoi spiegare un attimo cosa dovrebbe fare la macro? Giusto per avere un aiuto iniziale alla comprensione del comportamento corretto e cosa vuoi fare
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

La macro è usata in un file per computi metrici estimativi (io sono un geometra). Praticamente sono tre macro che:
- una controlla le somme
- una controlla i prodotti
- una fa un controllo generale e genera i risultati nelle colonne dalla T alla X
LibreO 7.2.0.4
MacOS 10.11.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

Non hai risposto adeguatamente, come si fa a sapere se funziona correttamente ? quale risultato deve dare e dove lo scrive ?
Noi non siamo geometri.
Comunque prova a modificare le prime righe così:

Codice: Seleziona tutto

Option VBASupport 1

Dim importo(1 To 1000) As Double, quantita(1 To 1000) As Double, nummax As Integer, numaart As Integer, somma As Double
 
 Sub estraisomma()
     CompatibilityMode(True) ' <<<<<<<<
     nummax = Cells(1, 19)
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

Mi dispiace non aver risposto correttamente prima. Ci riprovo: la macro controllaprodotti fa una verifica dei prodotti moltiplicando le colonne 4,6,8,10 e se c'è un errore rimanda una finestra "errore di prodotto". La macro controllasomme verifica le somme di ogni articolo sommando i prodotti(colonna 12 per ogni singolo articolo). La macro estraisomma fa un controllo generale e genera i risultati dalla colonna T in avanti così in ordine: numero articolo, somma delle quantità per quell'articolo, prezzo unitario di ogni articolo, prodotto delle due precedenti colonne, importo preso dalla colonna 16. Spero di essere stato più chiaro. Domani provo la modifica al codice che mi hai suggerito. Grazie per il momento.
LibreO 7.2.0.4
MacOS 10.11.6
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

Anche la macro controllasomme da una finestre “errore di somma” se lo trova nel controllo
LibreO 7.2.0.4
MacOS 10.11.6
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

Aggiungo qualche immagine per far capire meglio.
Allegati
La macro estraisomma genera i risultati come ho descritto nel messaggio precedente. I risultati sono uguali a 0 solo se l'articolo non è usato nel foglio &quot;computo metrico&quot;.
La macro estraisomma genera i risultati come ho descritto nel messaggio precedente. I risultati sono uguali a 0 solo se l'articolo non è usato nel foglio "computo metrico".
La macro controllasomme verifica il valore in blu sommando le celle in rosso. Così per ogni articolo.
La macro controllasomme verifica il valore in blu sommando le celle in rosso. Così per ogni articolo.
La macro controllaprodotti verifica il valore evidenziato in verde moltiplicando quelli in giallo. Così per ogni riga.
La macro controllaprodotti verifica il valore evidenziato in verde moltiplicando quelli in giallo. Così per ogni riga.
LibreO 7.2.0.4
MacOS 10.11.6
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

patel ha scritto:Non hai risposto adeguatamente, come si fa a sapere se funziona correttamente ? quale risultato deve dare e dove lo scrive ?
Noi non siamo geometri.
Comunque prova a modificare le prime righe così:

Codice: Seleziona tutto

Option VBASupport 1

Dim importo(1 To 1000) As Double, quantita(1 To 1000) As Double, nummax As Integer, numaart As Integer, somma As Double
 
 Sub estraisomma()
     CompatibilityMode(True) ' <<<<<<<<
     nummax = Cells(1, 19)
Purtroppo patel, aggiungendo quella riga non funziona.
LibreO 7.2.0.4
MacOS 10.11.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

d'altra parte la macro è scritta per excel e solo quelle molto semplici funzionano su Libre
Inoltre dalle immagini che hai allegato vedo una struttura diversa da quella del file allegato
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

patel ha scritto:d'altra parte la macro è scritta per excel e solo quelle molto semplici funzionano su Libre
Inoltre dalle immagini che hai allegato vedo una struttura diversa da quella del file allegato
Speravo si riuscisse a far girare su Libre. Dovrò trovare qualcuno che me la riscriva. Sinceramente non so quando una macro si possa definire semplice o complessa, questa dal mio punto di vista non mi sembrava così complessa, forse perchè so a cosa fa riferimento.
Perchè dici che il file allegato è diverso dalle immagini? Mi sembra strano perchè le ho estrapolate dallo stesso file.
Con un mio amico abbiamo aggiunto questa variabile: test As Boolean

Codice: Seleziona tutto

Sub estraisomma()

     nummax = Cells(1, 19)
     numart = Cells(2, 19)
     For i = 1 To numart
          quantita(i) = 0
          importo(i) = 0
     Next i
    i = 1
     While i <= nummax
         If (IsNumeric(Cells(i, 2)) And Cells(i, 2) <> "") Then
             j = Cells(i, 2)
         End If
         test = IsNumeric(Cells(i, 12)
la condizione non viene mai verificata per nessuna cella, da cosa può dipendere?
LibreO 7.2.0.4
MacOS 10.11.6
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro non funzionante

Messaggio da Eramad »

Dal basso della mia ignoranza penso che capendo bene cosa deve fare questa macro, essendo solo somme e prodotti con relative verifiche, non sia complicatissima da riscrivere.
E penso che riscriverla da zero sia la via migliore...
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

Alla fine è come dici tu, fa solo un controllo su somme e prodotti. Speravo che avendo già la base si potesse sistemare velocemente. Se avessi avuto qualche conoscenza di BASIC avrei potuto provarci io ma penso che dovrò cercare qualcuno che lo faccia al mio posto.
LibreO 7.2.0.4
MacOS 10.11.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

te lo posso fare anche io se alleghi un file con i dati ed i risultati desiderati e con spiegazioni a prova di non geometra.
sarebbe gradito anche un file excel funzionante
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro non funzionante

Messaggio da Eramad »

non è difficile.
Con le guide e wiki che si trovano facilmente, la scrivi in una oretta.
Poi trovi qualche esempio qua e la e rubi un po di codice e vedrai che piano piano impari.
Io sto imparando lentamente facendo così. Leggo guide e wiki e ogni volta che devo fare qualcosa cerco il comando relativo, me lo studio due minuti, faccio un paio di prove e arrivo al risultato.

Se vuoi che te lo faccia qualcuno al posto tuo...non imparerai mai e un domani che hai bisogno di anche una piccola modifica dovrai sempre rivolgerti ad altri.

Comunque questo qualcuno avrà sicuramente bisogno di capire bene ogni singolo passaggio che la macro deve eseguire e sapere ogni singola cella che deve prendere in considerazione.
Quindi ci vuole una spiegazione il più dettagliata possibile e meno contorta possibile ;)

Edit:

Una curiosità...ma perchè hai bisogno di una macro che controlla le somme e i prodotti?
Cioè, non basterebbe mettere le formule in quelle caselle e fare in modo che si calcoli automaticamente i risultati? così sei sicuro che non ci sono errori...
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

theirish ha scritto:la macro controllaprodotti fa una verifica dei prodotti moltiplicando le colonne 4,6,8,10
di quale foglio ?
theirish ha scritto:lLa macro controllasomme verifica le somme di ogni articolo sommando i prodotti(colonna 12 per ogni singolo articolo)
di quale foglio ?. -----
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

Eramad ha scritto: Una curiosità...ma perchè hai bisogno di una macro che controlla le somme e i prodotti?
Cioè, non basterebbe mettere le formule in quelle caselle e fare in modo che si calcoli automaticamente i risultati? così sei sicuro che non ci sono errori...
Ottima osservazione :bravo:
inoltre il messaggio di errore non ti dice dov'è.
in conclusione non abbiamo capito lo scopo della discussione
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

@Eramad : sicuramente dovrò imparare almeno le basi della programmazione, l'ho già messo nella lista delle cose da fare, ma preferirei partire con qualcosa di più semplice.
@patel : le macro controllano somme e prodotti sul foglio "Computo Metrico", il foglio "Elenco Prezzi" serve ad inserire la descrizione delle voci che poi verranno usate nell'altro foglio.

Per entrambi: le formule automatiche per somme e prodotti ci sono già, solo che nel foglio "Computo Metrico" vengono aggiunte ed eliminate righe a seconda del lavoro che viene effettuato e quindi c'è il rischio che qualche prodotto o qualche somma non sia corretta. Visto che la somma finale è quella che il cliente dovrà spendere per ristrutturare casa è meglio che non ci siano errori nei conti e controllare singolarmente ogni somma o prodotto prenderebbe molto tempo. Controllare i conti di un file con decine di centinaia di righe non è il massimo.
LibreO 7.2.0.4
MacOS 10.11.6
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

patel ha scritto:te lo posso fare anche io se alleghi un file con i dati ed i risultati desiderati e con spiegazioni a prova di non geometra.
sarebbe gradito anche un file excel funzionante
Domani ti allego un file excel perfettamente funzionante. Grazie.
LibreO 7.2.0.4
MacOS 10.11.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

che abbia anche un errore
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

è la funzione isnumeric che libre non capisce, prova questa

Codice: Seleziona tutto

Option VBASupport 1

Dim importo(1 To 1000) As Double, quantita(1 To 1000) As Double, nummax As Integer, numaart As Integer, somma As Double
 
 
 Sub estraisomma()
     CompatibilityMode(True)
     nummax = Cells(1, 19)
     numart = Cells(2, 19)
     For i = 1 To numart
          quantita(i) = 0
          importo(i) = 0
     Next i
    i = 1
     While i <= nummax
         If (IsActualNumeric(Cells(i, 2)) And Cells(i, 2) <> "") Then
             j = Cells(i, 2)
         End If
         If (IsActualNumeric(Cells(i, 12)) And (IsActualNumeric(Cells(i, 14)) And Cells(i, 14) <> "")) Then
                 importo(j) = importo(j) + Cells(i, 16)
                 quantita(j) = quantita(j) + Cells(i, 12)
          End If
         i = i + 1
     Wend
         For i = 1 To numart
         Cells(i, 20) = i
         Cells(i, 21) = quantita(i)
         Cells(i, 22) = Worksheets("Elenco prezzi").Cells(11 + i * 3 - 2, 6)
         Cells(i, 23) = Cells(i, 21) * Cells(i, 22)
         Cells(i, 24) = importo(i)
         If Abs(Cells(i, 24) - Cells(i, 23)) > 1000 Then
                     Cells(i, 20).Select
                     Beep
                     MsgBox ("Errore")
         End If
 
     Next i
 
 End Sub
 
 Sub controllasomme()
 
     nummax = Cells(1, 19)
     numart = Cells(2, 19)
          somma = 0
          j = 0
    i = 1
     While i <= nummax
         If (IsActualNumeric(Cells(i, 2)) And Cells(i, 2) <> "") Then
             somma = 0
         End If
        
         If (Cells(i, 4) = "") And ((Cells(i, 6) = "") And (Cells(i, 8) = "") And (Cells(i, 10) = "") And (IsActualNumeric(Cells(i, 12)) And Cells(i, 12) <> "")) Then
                 Cells(i, 19) = somma
                 If (Abs(somma - Cells(i, 12)) > 0.005) And (somma <> 0) Then
                     Cells(i, 12).Select
                     Beep
                     MsgBox ("Errore di somma")
                 End If
                 
         End If
         If (IsActualNumeric(Cells(i, 12)) And Cells(i, 12) <> "") Then
                 somma = somma + Cells(i, 12)
                 Cells(i, 12).Select
         End If
         
         i = i + 1
         j = j + 1
     Wend
 End Sub
 Sub controllaprodotti()
 
     nummax = Cells(1, 19)
     numart = Cells(2, 19)
    i = 1
     While i <= nummax
         prodotto = 0
         If (IsActualNumeric(Cells(i, 12)) And (Cells(i, 12) <> "")) Then
             If (((IsActualNumeric(Cells(i, 4)) Or (Cells(i, 4) = ""))) And ((IsActualNumeric(Cells(i, 6)) Or (Cells(i, 6) = ""))) And ((IsActualNumeric(Cells(i, 8)) Or (Cells(i, 8) = "")) And (IsActualNumeric(Cells(i, 10)) Or (Cells(i, 10) = "")))) Then
                 Cells(i, 12).Select
                 If Cells(i, 4) <> "" Then a = Cells(i, 4) Else a = 1
                 If Cells(i, 6) <> "" Then b = Cells(i, 6) Else b = 1
                 If Cells(i, 8) <> "" Then c = Cells(i, 8) Else c = 1
                 If Cells(i, 10) <> "" Then d = Cells(i, 10) Else d = 1
                  prodotto = a * b * c * d
                 If (Abs(prodotto - Cells(i, 12)) > 0.005) And ((Cells(i, 4) <> "") Or (Cells(i, 6) <> "") Or (Cells(i, 8) <> "") Or (Cells(i, 10) <> "")) Then
                     Cells(i, 12).Select
                     Cells(i, 18) = prodotto
                     Beep
                     MsgBox ("Errore di prodotto")
                 End If
             End If
         End If
         i = i + 1
     Wend
 End Sub
 Public Function IsActualNumeric(Expression) As Boolean
'**********************
'Code Courtesy of
'  Paul Eugin
'**********************
    Dim retBool As Boolean, iCtr As Long
    
    If Not IsNull(Expression) Then    
        For iCtr = 1 To Len(Expression)
            Select Case Asc(Mid(Expression, iCtr, 1))
                Case 48 To 57, 46
                    retBool = True
                Case Else
                    retBool = False
                    Exit For
            End Select
        Next
    End If
    IsActualNumeric = retBool
End Function
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro non funzionante

Messaggio da Eramad »

theirish ha scritto:Per entrambi: le formule automatiche per somme e prodotti ci sono già, solo che nel foglio "Computo Metrico" vengono aggiunte ed eliminate righe a seconda del lavoro che viene effettuato e quindi c'è il rischio che qualche prodotto o qualche somma non sia corretta.
Dunque...

- Se aggiungete righe, anche la macro potrebbe non andare prorpio bene perchè se nella macro indichi delle celle, quelle che aggiungete dopo non sono considerate nella macro.
- Se quando aggiungete le righe, rimettete le formule, risolvete comunque visto che i calcoli li fa ancora automaticamente.
- I totali sono dati da range di celle quindi se aggiungete celle entro quel range, una formula si aggiorna perchè vede la variazione mentre una macro no. Esempio:

Hai dei numeri nelle celle da A1 ad A10. Hai una formula =Somma(A1:A10) e una macro che somma dette celle.
Se aggiungi una riga tra la 7 e la 8 per esempio..la formula si aggiorna automaticamente in =Somma(A1:A11) mentre la macro no. Quindi in questo caso è più corretta una formula.
Con la macro si potrebbe ovviare a questo errore ma certo in maniera molto più contorta.

Continuo a credere che le formule siano la cosa migliore in questo caso visto che sarebbe la via più semplice e rapida e in caso di malfunzionamento la più facile da risolvere autonomamente/in minor tempo.
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

@patel: con IsActualNumeric non lo riconosce, ho provato anche IsNumber e IsNumerical ma niente.
@Eramad: Su excel è sempre andata bene la macro, in 15 anni mai avuto un problema. Da non esperto mi sembra che anche la macro usata prenda in considerazione un range di celle perchè legge dall'intera colonna.

Vi allego un codice prova, mi sapete dire perchè qualsiasi valore io metta nella cella A1 mi da sempre FALSE? Il riferimento alla cella l'ho trovato su altro forum un pò datato, ma sempre suggerito da patel.

Codice: Seleziona tutto

Sub ExampleIsNumeric
	If IsNumeric(thiscomponent.Sheets.getByName("Foglio1").getCellByPosition(1,1)) then
	Print "True" Else    
        Print "False"
    End If
End Sub 
Allegati
Prova.ods
(8.58 KiB) Scaricato 59 volte
LibreO 7.2.0.4
MacOS 10.11.6
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro non funzionante

Messaggio da Eramad »

il riferimeno alla cella A1 è (0,0)

Nel codice che hai scritto fai riferimento alla cella B2
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

Eramad ha scritto:il riferimeno alla cella A1 è (0,0)

Nel codice che hai scritto fai riferimento alla cella B2
Anche mettendo (0,0) da sempre FALSE.
LibreO 7.2.0.4
MacOS 10.11.6
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Macro non funzionante

Messaggio da Eramad »

Dalla fretta avevo guardato la macro solo a metà.

Codice: Seleziona tutto

Sub ExampleIsNumeric
   If IsNumeric(thiscomponent.Sheets(0).getCellByPosition(1,1).value) then
   Print "True" Else    
        Print "False"
    End If
End Sub
Devi aggiungere .value per far prendere in considerazione il valore nella cella.
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

@patel :Allego il file che mi hai chiesto con errori sia nella macro "controllaprodotti" sia in quella "controllasomme". L'errore di prodotto è nella cella L18, mentre l'errore di somma è nella cella L25. Eseguendo la macro verranno segnalati altri errori di somma ma non prenderli in considerazione.
Allegati
ProvaerroreMacro.xls
(152.5 KiB) Scaricato 49 volte
LibreO 7.2.0.4
MacOS 10.11.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

theirish ha scritto:@patel: con IsActualNumeric non lo riconosce
ma hai aggiunto la funzione ? a me sembra che giri bene senza errori
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

Allora, ho aggiunto la funzione, la macro gira, controlla prodotti e somme ma se ci sono degli errori non da il messaggio. La macro che genera i risultati riempie solo parte delle celle dalla T alla X. Che ci sia qualcosa da cambiare nei valori delle funzione inserita? Un passo in avanti comunque è stato fatto.
LibreO 7.2.0.4
MacOS 10.11.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro non funzionante

Messaggio da patel »

Purtroppo non è stato fatto alcun passo avanti, i risultati sono diversi e non ho capito perché, inoltre ho controllato e la funzione IsNumber esiste anche in Libre, però evidentemente si comporta in modo diverso da Excel.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
theirish
Messaggi: 30
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggio da theirish »

Hai dato un occhiata a quel file excel che ho allegato ieri? Giusto per farti un idea di come funzionano quelle macro.
LibreO 7.2.0.4
MacOS 10.11.6
Rispondi