Pannello di Controllo Moderatore ]

[Risolto] Macro non funzionante

Discussioni sull'applicazione per i fogli di calcolo

[Risolto] Macro non funzionante

Messaggioda theirish » venerdì 9 novembre 2018, 16:10

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   Espandi visualeStringi visuale
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 9 volte
Ultima modifica di theirish il martedì 13 novembre 2018, 16:01, modificato 2 volte in totale.
LibreO 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda Eramad » venerdì 9 novembre 2018, 16:29

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
Avatar utente
Eramad
 
Messaggi: 71
Iscritto il: martedì 10 aprile 2018, 13:56
Località: Pistoia

Re: Macro non funzionante

Messaggioda theirish » venerdì 9 novembre 2018, 16:35

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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda patel » venerdì 9 novembre 2018, 21:23

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   Espandi visualeStringi visuale
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)
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda theirish » venerdì 9 novembre 2018, 22:04

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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda theirish » venerdì 9 novembre 2018, 22:10

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

Re: Macro non funzionante

Messaggioda theirish » sabato 10 novembre 2018, 10:38

Aggiungo qualche immagine per far capire meglio.
Allegati
estraisomma.png
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".
controllasomme.png
La macro controllasomme verifica il valore in blu sommando le celle in rosso. Così per ogni articolo.
controllaprodotti.png
La macro controllaprodotti verifica il valore evidenziato in verde moltiplicando quelli in giallo. Così per ogni riga.
LibreO 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda theirish » sabato 10 novembre 2018, 10:40

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   Espandi visualeStringi visuale
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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda patel » domenica 11 novembre 2018, 13:03

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
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda theirish » domenica 11 novembre 2018, 15:19

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   Espandi visualeStringi visuale
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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda Eramad » domenica 11 novembre 2018, 17:33

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
Avatar utente
Eramad
 
Messaggi: 71
Iscritto il: martedì 10 aprile 2018, 13:56
Località: Pistoia

Re: Macro non funzionante

Messaggioda theirish » domenica 11 novembre 2018, 18:01

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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda patel » domenica 11 novembre 2018, 18:07

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
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda Eramad » domenica 11 novembre 2018, 18:11

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
Avatar utente
Eramad
 
Messaggi: 71
Iscritto il: martedì 10 aprile 2018, 13:56
Località: Pistoia

Re: Macro non funzionante

Messaggioda patel » domenica 11 novembre 2018, 18:23

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 ?. -----
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda patel » domenica 11 novembre 2018, 18:24

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
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda theirish » domenica 11 novembre 2018, 19:09

@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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda theirish » domenica 11 novembre 2018, 19:11

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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda patel » domenica 11 novembre 2018, 19:29

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

Re: Macro non funzionante

Messaggioda patel » domenica 11 novembre 2018, 19:50

è la funzione isnumeric che libre non capisce, prova questa
Codice: Seleziona tutto   Espandi visualeStringi visuale
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
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda Eramad » domenica 11 novembre 2018, 20:06

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
Avatar utente
Eramad
 
Messaggi: 71
Iscritto il: martedì 10 aprile 2018, 13:56
Località: Pistoia

Re: Macro non funzionante

Messaggioda theirish » lunedì 12 novembre 2018, 0:25

@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   Espandi visualeStringi visuale
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 1 volta
LibreO 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda Eramad » lunedì 12 novembre 2018, 0:32

il riferimeno alla cella A1 è (0,0)

Nel codice che hai scritto fai riferimento alla cella B2
Apache OpenOffice 4.1.5
Avatar utente
Eramad
 
Messaggi: 71
Iscritto il: martedì 10 aprile 2018, 13:56
Località: Pistoia

Re: Macro non funzionante

Messaggioda theirish » lunedì 12 novembre 2018, 9:12

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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda Eramad » lunedì 12 novembre 2018, 9:26

Dalla fretta avevo guardato la macro solo a metà.

Codice: Seleziona tutto   Espandi visualeStringi visuale
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
Avatar utente
Eramad
 
Messaggi: 71
Iscritto il: martedì 10 aprile 2018, 13:56
Località: Pistoia

Re: Macro non funzionante

Messaggioda theirish » lunedì 12 novembre 2018, 9:28

@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 3 volte
LibreO 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda patel » lunedì 12 novembre 2018, 17:22

theirish ha scritto:@patel: con IsActualNumeric non lo riconosce
ma hai aggiunto la funzione ? a me sembra che giri bene senza errori
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda theirish » lunedì 12 novembre 2018, 21:23

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 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Re: Macro non funzionante

Messaggioda patel » martedì 13 novembre 2018, 9:56

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.
-------------------
OpenOffice 4.1 e Libre Office 6 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 2925
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Macro non funzionante

Messaggioda theirish » martedì 13 novembre 2018, 9:59

Hai dato un occhiata a quel file excel che ho allegato ieri? Giusto per farti un idea di come funzionano quelle macro.
LibreO 6.1.3.2 su MacOS 10.11.6
theirish
 
Messaggi: 21
Iscritto il: venerdì 9 novembre 2018, 12:50
Località: Gaggio Montano (BO)

Prossimo

Torna a Calc

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti