› Excel e gli applicativi Microsoft Office › IF semplice per calcolare il doppio di un numero
-
AutoreArticoli
-
Ciao, sto facendo queso esercizio in cui la Macro mi deve calcolare il doppio di un numero solo se questo è > 10.
Io ho scritto così:
Però niente da fare, mi scrive sempre "Il numero scritto è < 10". Non è corretto il controllo che faccio?
Grazie
Il controllo è corretto (if numero > 10 then). Però manca qualcosa... nella tua mente, ripercorri passo passo il flusso delle operazioni. Ti salterà agli occhi subito!
Immagina di essere tu un computer quantistico che esegue pedissequamente le istruzioni con i dati *forniti*. Cosa osservi?
Tu scrivi "calcolo del numero doppio solo se il numero inserito è > 10" si pero il Numero dove lo inserisci?
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Suggerimento aggiuntivo: accanto ad ogni istruzione (o subito prima) scrivi qualche parola di commento sullo scopo dell'istruzione scritta sulla riga (o quella immediatamente seguente se scrivi il commento subito prima).
Anche facendo così, l'errore (concettuale, non di sintassi) salterà subito fuori.
se ci pensi bene non hai neppure bisogno della variabile numero, basta usare le celle
se ci pensi bene non hai neppure bisogno della variabile numero, basta usare le celle
Eh, non riesco ancora a ragionare a così livelli "bassi", sto molo più in superficie...
Per esempio, sto cercando di capire come assegnare a Numero il valore della cella che ho selezionato..
Numero = Range.Select
Perchè mi dà errore? Cos'è che sbaglio?
Numero = Range.Select
Perchè mi dà errore? Cos'è che sbaglio?
Non utilizzi in modo corretto l'oggetto Range, che richiede di essere valorizzato con un riferimento a (nel caso più semplice) una cella del foglio. Il riferimento si fa tipicamente con una stringa che identifica la riga e la colonna. Il Range così costruito rappresenta una cella del foglio: Range("C10") punta alla cella che si torva all'intersezione della colonna C e della riga 10.
Tu stesso nel tuo esempio iniziale lo hai utilizzato correttamente. Fai il ragionamento analogo e capirai.
Nota finale: quando alleghi del codice, fallo utilizzando il pulsante "(codice VBA)", non allegare un'immagine.
Ciao a tutti
Per Damiano
Oltre a quanto hanno detto i miei autorevoli colleghi, visto che sei alle prime armi, ti consiglio di imparare sin da subito ad a evitare il .Select - E' dispendioso.
Per esempio: la due righe di codice
Range("c3").Select
ActiveCell.Value = " eccetera "
Andrebbe meglio scritta così
Range("c3") = " eccetera "Ciao,
Mario
vecchio frac ha scritto:
Non utilizzi in modo corretto l'oggetto Range, che richiede di essere valorizzato con un riferimento a (nel caso più semplice) una cella del foglio. Il riferimento si fa tipicamente con una stringa che identifica la riga e la colonna. Il Range così costruito rappresenta una cella del foglio: Range("C10") punta alla cella che si torva all'intersezione della colonna C e della riga 10.Ok, compreso, grazie..
Nel mio caso però non ho una stringa a cui riferirmi, vorrei che la cella selezionata dal mouse venisse comparata al numero 10.
Quindi in testa mia viene da scrivere appunto:
Numero = Range.Select 'Assegno alla variabile il valore della cella selezionata If Numero > 10 Then..ma non funziona, non riesco ad assegnare ad una variabile il valore della cella selezionata dal mouse.
Ricordo sempre che sto imparando la sintassi e la grammatica del VBA, per cui....abbiate pietà
vorrei che la cella selezionata dal mouse
Allora devi documentarti un pochino meglio sull'utilizzo del modello a oggetti di Excel.
Scoprirai che esiste un metodo dell'oggetto Application chiamato "Activecell" che restituisce un riferimento alla cella correntemente selezionata (in generale, Application espone altri oggetti che sono in quel momento "Active": ActiveSheet, ActiveWorkbook, ecc.). Per esempio, inserisci "active" nel Visualizzatore Oggetti e vedi cosa restituisce (per restringere, puoi filtrare solo sulla libreria Excel lasciando perdere le altre).
In questo caso particolare poi Application (che è l'oggetto "padre") può essere omesso:
Numero = Activecell 'Assegno alla variabile il valore della cella selezionata If Numero > 10 ThenMitico!!! Davvero, per me è come nel film Matrix, voi vedete già tutto in verde, io invece per farlo devo andare a modificare il colore delle celle....
...oppure attivare qualche formattazione condizionale
Ottimo, ora passo a qualche altro argomento!!
Grazie a tutti
-
AutoreArticoli
