PDA

View Full Version : [Excel 2007] fare delle modifiche a delle macro


Limpido
18-04-2009, 10:41
Ciao a tutti vorrei implementare questo modulo fatto con le macro in excell


Sub macro311()
If ActiveSheet.Range("f11").Value <> 274000 / (2200 - 750) Then
MsgBox "ATTENZIONE: IL VOLUME DI PAREGGIO E' SBAGLIATO!"
ElseIf ActiveSheet.Range("g15").Value <> 423500 Then
MsgBox "ATTENZIONE: IL PROFITTO E' SBAGLIATO!"
ElseIf ActiveSheet.Range("e19").Value <> Round(0.80, 2) Then
MsgBox "ATTENZIONE: IL MARGINE DI SICUREZZA E' SBAGLIATO!"
Else
MsgBox "BRAVO E' GIUSTO!"
End If
End Sub



Mi servirebbe il codice da inserire x far uscire i seguenti messaggi:

Se nella cella es: X Y Z si inserisce un numero negativo esci un messaggio che informa che e stato inserire un numero negativo

Se nella cella es: X Y Z si inserisce una lettera e non un numero esce il relativo messaggio

Se nella cella es: X Y Z non si inserisce nulla esce il relativo messaggio: Es. la cella è vuota inserire un valore.


MI data qualche indicazione per i 3 stringhe che vi ho citato?

MarcoGG
18-04-2009, 13:01
Dim indirizzoRange As String
indirizzoRange = "A1"

If Range(indirizzoRange).Text = "" Then
MsgBox "Inserire Un Valore in " & indirizzoRange & " !", vbExclamation, "Errore"
Else
If IsNumeric(Range(indirizzoRange).Text) Then
If Range(indirizzoRange).Value < 0 Then
MsgBox "Inserire Un Numero Positivo in " & indirizzoRange & " !", vbExclamation, "Errore"
End If
Else
MsgBox "Inserire Un Valore Numerico in " & indirizzoRange & " !", vbExclamation, "Errore"
End If
End If

Da usarsi così, oppure parametrizzata in una Sub o Function... ;)

Limpido
18-04-2009, 13:26
grazie mille per l'0info, ti volevo chiedere come faccio a far controllare solo determinate celle? es: solo le celle A1 A2 A3?

MarcoGG
19-04-2009, 09:34
Come già suggerito, lo risolverei parametrizzando ( in una Sub ) il mio esempio precedente. La Sub riceve in ingresso un parametro stringa, che è l'indirizzo testuale del Range da controllare ( in questo caso controllerò le tre celle che hai chiesto, perciò Range("A1:A3") ), costruisce dinamicamente la stringa del MsgBox di errore, e lo visualizza. ;)

- La Sub :
Private Sub ControlloRange(indirizzoRange As String)

Dim testoMsg As String
Dim R As Range
For Each R In Range(indirizzoRange)
If R.Text = "" Then
testoMsg = testoMsg & "Inserire Un Valore in " & Replace(R.Address, "$", "") & " !" & vbCrLf
Else
If IsNumeric(R.Text) Then
If R.Value < 0 Then
testoMsg = testoMsg & "Inserire Un Numero Positivo in " & Replace(R.Address, "$", "") & " !" & vbCrLf
End If
Else
testoMsg = testoMsg & "Inserire Un Valore Numerico in " & Replace(R.Address, "$", "") & " !" & vbCrLf
End If
End If
Next R
If testoMsg <> "" Then
MsgBox testoMsg, vbExclamation, "Errore"
End If

End Sub

- Chiamo la Sub ( codice utilizzatore ) :
ControlloRange "A1:A3"

E il gioco è fatto. ;)

Limpido
20-04-2009, 18:43
grazie mille con i vostri suggerimenti e partendo da zero e venuto fuori un bel lavoretto. :-)

Un ultima domanda, su excell devo far comparire in un grafico una linea che mi va a visualizzare i Costi fissi.

Se la funzine e lineare (cioè ipotizzo che tali costi sono 1.500.000 euro sempre) la linea del grafico va bene.

Se invece voglio creare una linea non lineare ma a scaletta che man mano aumenta il volume di produzione aumenta anche a costi fissi (stile scala del Pantaleoni in economia) questa non me fa fare.

Esempio A

Costi Fissi __________________________



Esempio B

_____________________________
__________________
_______

Volume di Produzione da 0 a 100 prodotti i Costi fissi saranno 1.500.000 euro
Volume di Produzione da 101 a 200 prodotti i Costi fissi saranno 20.00.000 euro
Volume di produzione da 201 a 700 prodotti i Costi fisssi saranno 2.500.00 euro

graficamente in excell 2007 come devo fare per far visualizzare la linea a scaletta dell'esempio B?

MarcoGG
21-04-2009, 09:07
Se invece voglio creare una linea non lineare ma a scaletta che man mano aumenta il volume di produzione aumenta anche a costi fissi (stile scala del Pantaleoni in economia) questa non me fa fare.


Non sono sicuro si possa fare, dovrei provare, ma puoi ottenere un risultato molto simile usando istogrammi...

Limpido
21-04-2009, 10:19
devo fare un grafico stile quello che ho allegato..