Grazie Nick. All'età di 75 anni mi hai dato la voglia di intraprendere lo studio di un nuovo linguaggio di programmazione. Una curiosità. Negli esempi di questa lezione il Debug.Print ("x minore di 0 o maggiore di 4") viene proposto anche con x=zero. Una piccola imperfezione, ma non vorrei che inducesse qualche lettore in errore. Grazie comunque per la chiarezza di esposizione, seguirò tutte le lezioni.
@NickTheGeek Жыл бұрын
Ciao Angelo, assolutamente sì, hai ragione; grazie per la precisazione.
@riccardoricky13353 жыл бұрын
ti confermo che la chiarezza espositiva, quando si parla di concetti così difficili, non è cosa da tutti. Tu invece sei chiarissimo e anche disponibilissimo. Grazie, sto imparando grazie a questo corso
@NickTheGeek3 жыл бұрын
Grazie a te per il commento.
@alessandrotorri27956 ай бұрын
Grazie Nick sto seguendo ora i tuoi video. Premetto che sto riconsiderando il VBA dopo aver studiato il C++, Java e Python in quanto più semplice da applicare ai fogli di calcolo. Il VBA lo avevo lasciato da parte da secoli ma vedo che è molto valido per costruire anche dei programmi di una certa importanza con i suoi form e tutti gli oggetti necessari per creare sia delle semplici rubriche sia per creare complesse applicazioni di database, di gestione di magazzino ecc. Complimenti per la tua chiarezza nell'esposizione del linguaggio.
@elisabettacaldara80544 жыл бұрын
Buongiorno sig. Nick, per una neofita di programmazione VBA, trovo il suo corso chiaro e ben spiegato. Grazie mille!!!!!!
@NickTheGeek4 жыл бұрын
Ciao Elisabetta, grazie a te per seguirmi
@jacopocimaglia24044 жыл бұрын
E' tutto veramente molto chiaro e spiegato con attenzione. Complimenti e grazie per questo ottimo corso, fondamentale per il passaggio dal semplice excel al vba!
@NickTheGeek4 жыл бұрын
Grazie a te per il commento Jacopo!
@edoardolanotte39304 жыл бұрын
tutto il corso sul linguaggio VBA è molto interessante . Me lo sto vedendo ad uno a uno. Grazie
@NickTheGeek4 жыл бұрын
Grazie a te per seguirmi.
@enzorende66635 жыл бұрын
Grazie Nick. Come Te dovrebbero essere tutti i Docenti Universitari. Riesci a far comprendere anche le cose più difficili. I prof. universitari sono bravi, nel rendere le cose semplici complicate. Ancora Bravo. Ti prego continua.....sei un arricchimento per tutti noi.
@NickTheGeek5 жыл бұрын
Grazie a te per questo commento!
@edmondosestini32276 жыл бұрын
Dopo averne visti 19, posso confermare che finora mi sono molto piaciuti! Sono interessanti e molto molto ben spiegati. Ancora complimenti. Bravo!
@NickTheGeek6 жыл бұрын
Grazie Edmondo!
@manuelcrepaldi22614 жыл бұрын
Complimenti Nicola, nulla da invidiare i corsi a pagamento. Personalmente ne avevo acquistato uno per programmazione Android e molte volte mi trovavo "abbandonato" con dei concetti che per nulla appresi venivano dati per acquisiti, mentre il tuo modo di procedere lo trovo più corretto. Tutto molto chiaro e mentre ti seguo sviluppo la mia macro, grazie.
@NickTheGeek4 жыл бұрын
Grazie per i complimenti Manuel!
@elisabettaspirito99773 жыл бұрын
corso utilissimo! sto al ventesimo tutorial in 2 giorni grazie!
@NickTheGeek3 жыл бұрын
Ottimo!
@cosimotataranni4 жыл бұрын
Complimenti per la didattica. Grazie per la tua condivisione del sapere: è una ricchezza che ti auguro di mantenere sempre. Beato chi ti ha come collega.
@NickTheGeek4 жыл бұрын
Grazie a te per le belle parole
@tommasocolombo45234 жыл бұрын
Ciao, lezioni davvero molto utili. Complimenti!
@NickTheGeek4 жыл бұрын
Grazie!
@antoniodelrio17295 жыл бұрын
Estremamente chiaro e per me che sono nuovo al linguaggio di grande aiuto per usare meglio il programma. Grazie!
@NickTheGeek5 жыл бұрын
Ottimo, grazie a te per il commento!
@maurodoncato74615 жыл бұрын
Grazie Nick per i tuoi video. Fin'ora ho letto e provato un testo, seguito un mini-corso e fatto ricerche sui forum ... finalmente ho trovato qualcuno che usa un metodo per spiegare!
@NickTheGeek5 жыл бұрын
Ciao Mauro, grazie a te, mi fa piacere che il corso sia utile :)
@PeterAlbatross884 жыл бұрын
Ciao! Sto iniziando questo "percorso" tutorial e finora devo dire che risulta molto utile, ti faccio i complimenti! Gli argomenti trattati sono molteplici , li spieghi con chiarezza e in modo esaustivo! Gli esempi poi aiutano molto nella comprensione. Grazie!
@NickTheGeek4 жыл бұрын
Grazie mille Pietro
@andreaangeletti88386 жыл бұрын
Caro Nick, sto seguendo questo corso con estremo interesse: prendo tanti appunti e non mi perdo una parola dei tuoi video, che trovo incredibilmente utili e ben fatti. Sei bravissimo, preparato e preciso nelle spiegazioni e riesci a spiegare concetti piuttosto complessi in modo chiaro e lineare. I miei complimenti!! Appena ho finito il corso, metto un like su tutti i tuoi video.
@NickTheGeek6 жыл бұрын
Mi fa piacere che i miei video siano utili! Grazie a te per seguirmi e per i complimenti!
@mircobonaso56383 жыл бұрын
Il corso E' interessante e l'esposizione molto chiara!
@NickTheGeek3 жыл бұрын
Grazie Mirco
@domenicolardo45794 жыл бұрын
Ho già una discreta infarinatura del VBA e di Excel e posso confermare l'ottima spiegazione degli argomenti trattati in modo assai semplice da essere utili anche per chi si avvicina al VBA per la prima volta. Molto Bravo. Voglio però segnalare un piccolo errore che non incide minimamente sulla buona qualità della lezione ossia nell'esempio del riconoscimento dei numeri da 1 a 4, se il numero non rientra in questi valori, nel caso Else quindi, nel Debug.Print è stata data l'istruzione di scrivere "x minore di 0 o maggiore di 4" anzichè "x minore di 1 o maggiore di 4". Comunque grazie, i video sono davvero efficaci.
@NickTheGeek4 жыл бұрын
Grazie per la segnalazione e per i complimenti
@davidecongiu61733 жыл бұрын
Ormai le tue lezioni stanno diventando un appuntamento serale quotidiano. Meglio di NETFLIX!
@NickTheGeek3 жыл бұрын
Grazie Davide!
@antonysovy58876 жыл бұрын
si, i tuoi video sono interessanti nonché utili. grazie
@NickTheGeek6 жыл бұрын
grazie a te :)
@droitaucoeur13 жыл бұрын
Buongiorno Nick. Da quello che ho imparato con altri programmatori, il Select Case è più sicuro e più rapido d'esecuzione del If End If; sopratutto quando ci sono molte condizioni.
@NickTheGeek3 жыл бұрын
Ciao Jacky, grazie per il suggerimento.
@robertobraicovick68676 жыл бұрын
Grazie!
@giancarlogherlone74354 жыл бұрын
se in case si vuole scegliere una and invece di una or(,) come si può fare?
@NickTheGeek4 жыл бұрын
in questo caso utilizzerei una If, comunque con Select si può fare ma devi modificare un po' il codice; ad esempio: Select Case True Case x > 0 And x < 100 ... Case x > 99 And x < 200 ... End Select
@giancarlogherlone74354 жыл бұрын
Grazie per la risposta. Ma più in generale come si può utilizzare la stessa variabile in macro diverse, nello stesso modulo, mantenendo il valore di origine? Grazie.
@NickTheGeek4 жыл бұрын
Devi dichiarare la variable in testa al modulo, prima di tutte le subroutine; il video 11 di questa stessa playlist può esserti utile: kzbin.info/www/bejne/gZ63eWSEoc6ef5o
@aruannovincenzo3 жыл бұрын
Buonasera Prof. NickTheGeek, per tornare sull'argomento select case ho approfittato per fare un controllo sulle mie tasse da pagare in base all'imponibile ed è venuto fuori questo: Sub Imposte() Dim Imponibile As Double, SK01 As Double, SK02 As Double, SK03 As Double, SK04 As Double, SK05 As Double, SK06 As Double Imponibile = InputBox("Inserisci imponibile") SK01 = 0 SK02 = Imponibile * 0.23 SK03 = (15000 * 0.23) + ((Imponibile - 15000) * 0.27) SK04 = (15000 * 0.23) + ((28000 - 15000) * 0.27) + ((Imponibile - 28000) * 0.38) SK05 = (15000 * 0.23) + ((28000 - 15000) * 0.27) + ((55000 - 28000) * 0.38) + ((Imponibile - 55000) * 0.41) SK06 = (15000 * 0.23) + ((28000 - 15000) * 0.27) + ((55000 - 28000) * 0.38) + ((75000 - 55000) * 0.41) + ((Imponibile - 75000) * 0.43) Select Case Imponibile Case Is < 8.174 Debug.Print (Int(SK01)) Case 8.175 To 15000 Debug.Print (Int(SK02)) Case 15001 To 28000 Debug.Print (Int(SK03)) Case 28001 To 55000 Debug.Print (Int(SK04)) Case 55001 To 75000 Debug.Print (Int(SK05)) Case Is > 75000 Debug.Print (Int(SK06)) End Select End Sub Non sono sicuro sulle variabili in quanto, a colpo d'occhio vedo troppi numeri, ma credo che sia buono.
@NickTheGeek3 жыл бұрын
Ciao Vincenzo, non ho fatto prove ma a occhio credo che dovrebbe funzionare; l'unico dubbio che ho è sui numeri 8.174 e 8.175, immagino che tu voglia scrivere 8174 e 8175, quindi il punto non occorre (anzi, forse ti dà errore). Naturalmente potresti fare a meno di tutte le variabili, scrivendo le formule per il conteggio direttamente nei debug.print, però con le variabili il codice è più gestibile. L'unica variabile di cui potresti fare davvero a meno è la SK01, perché nel primo Case potresti scrivere direttamente Debug.Print("0"). Un'altra cosa che potresti eventualmente fare è utilizzare delle costanti al posto dei limiti degli scaglioni, dichiarandole all'inizio: Const primo_limite As Integer = 15000 Const secondo_limite As Integer = 28000 etc. e quindi poi nelle formule potresti usare direttamente i nomi delle costanti; il vantaggio è che se in futuro i limiti cambiano, dovrai modificarli solo nelle dichiarazioni delle costanti anziché in tutte le formule.
@aruannovincenzo3 жыл бұрын
@@NickTheGeek buongiorno, grazie per il suggerimento. effettivamente, in chiave operativa è più performante come lei mi suggerisce. Ho agito in questo modo, dichiarando le costanti come pubbliche in quanto, a rigor di logica, gli scaglioni Irpef sono destinati ad essere semi permanenti: Option Explicit Public Const L01 As Double = 8175 Public Const L02 As Double = 15000 Public Const L03 As Double = 28000 Public Const L04 As Double = 55000 Public Const L05 As Double = 75000 Public Const TI01 As Double = 0.23 Public Const TI02 As Double = 0.27 Public Const TI03 As Double = 0.38 Public Const TI04 As Double = 0.41 Public Const TI05 As Double = 0.43 ----------------------------------------------------------------- Dim Imponibile As Double, SK01 As Double, SK02 As Double, SK03 As Double, SK04 As Double, SK05 As Double, SK06 As Double Imponibile = InputBox("Inserisci imponibile") SK01 = 0 SK02 = Imponibile * TI01 SK03 = (L02 * TI01) + ((Imponibile - L02) * TI02) SK04 = (L02 * TI01) + ((L03 - L02) * TI02) + ((Imponibile - L03) * TI03) SK05 = (L02 * TI01) + ((L03 - L02) * TI02) + ((L04 - L03) * TI03) + ((Imponibile - L04) * TI04) SK06 = (L02 * TI01) + ((L03 - L02) * TI02) + ((L04 - L03) * TI03) + ((L05 - L04) * TI04) + ((Imponibile - L05) * TI05) Select Case Imponibile Case Is < L01 Debug.Print (Int(SK01)) Case L01 To L02 Debug.Print (Int(SK02)) Case L02 + 1 To L03 Debug.Print (Int(SK03)) Case L03 + 1 To L04 Debug.Print (Int(SK04)) Case L04 + 1 To L05 Debug.Print (Int(SK05)) Case Is > L05 Case Else Debug.Print (Int(SK06)) End Select End Sub In merito ai valori 8175 effettivamente avevo commesso un errore di trascrizione che mi ha fatto notare. Grazie ancora per i preziosi suggerimenti... importantissimi e super performanti.
@NickTheGeek3 жыл бұрын
Perfetto, con le costanti anche per le percentuali mi sembra ottimo. L'unico punto di attenzione è che alla fine ci sono due istruzioni: Case Is > L05 Case Else che sono alternative l'una all'altra, quindi ne puoi avere solo una; se dovessi scegliere, userei Case Else.
@giuseppelinguaglossa64085 жыл бұрын
ottimo
@NickTheGeek5 жыл бұрын
grazie!
@Santigliana964 жыл бұрын
Piano piano molto bene
@NickTheGeek4 жыл бұрын
Grazie
@giancarlogherlone74354 жыл бұрын
Come si può programmare un pulsante che arresta e fa riavviare una sub? Grazie per le tue risposte che mi sono estremamente utili.
@NickTheGeek4 жыл бұрын
La vedo difficile, perché Excel fa una sola cosa alla volta, e se sta girando una macro non puoi lanciarne un'altra che la metta in pausa.
@maurtre7 жыл бұрын
Corso estremamente interessante e lezione particolarmente utile. Mi capita spesso di impazzire con le funzioni annidate "se" di excel... Mi sembra che con Vba la gestione delle condizioni sia gestibile in modo più organizzato. Posso chiederti di consigliarmi un libro in italiano, per neofiti, su Vba? Grazie per quello che fai.
@NickTheGeek7 жыл бұрын
grazie, mi fa piacere che il corso sia utile :) sì soprattutto quando hai funzioni annidate, scriverle in vba secondo me è meglio a livello visivo, perché a scriverle tutte su una riga si corre il rischio di sbagliare facilmente; per quanto riguarda i libri non ho suggerimenti specifici da darti, ma mi trovo bene con le guide pocket di apogeo, non ne ho lette su excel ma di solito sono economiche e scritte in modo chiaro
@RanieroCiani5 жыл бұрын
ottimo video, ottimo corso VBA, complimenti! l'unica cosa è che l'audio è molto basso. Vorrei fare una domanda: select, rispetto ad if, è applicabile solo per per risultati booleani? ossia, se questo, allora fai questo, altrimenti quest'altro? oppure select è più potente? o se preferisci: possiamo applicare sempre select, dimenticandoci di if then?
@NickTheGeek5 жыл бұрын
Ciao, grazie per i complimenti. Vedo più l'If come booleano, perché per definizione la condizione può essere solo vera o falsa, mentre con Select valuti il valore di un'espressione, ma alla fine si tratta sempre di verificare se una condizione è soddisfatta oppure no (anche con Select). Quindi direi che Select e If sono sostanzialmente equivalenti, e in teoria potresti sempre utilizzare Select. La differenza è che, in pratica, si utilizza il Select solo quando gli ElseIf cominciano a diventare molti (qui il concetto di "molti" è relativo). Personalmente trovo il codice da scrivere con Select più "pulito" rispetto all'If, però alla fine mi ritrovo sempre ad utilizzare If anche per analogia con altri linguaggi di programmazione. Per quanto riguarda l'audio, in questo video è effettivamente basso, nella maggior parte degli altri dovrebbe essere migliore.
@RanieroCiani5 жыл бұрын
@@NickTheGeek grazie 1000 della tua esauriente risposta! Sì il problema dell'audio mi sembra effettivamente limitato a questo (sono arrivato al video 26 ). continua con questi video, che sono davvero il TOP! io uso excel da circa 30 anni (trenta!), ma sul VBA non avevo mai capito nulla, fino a questo corso... grazie ancora e buon lavoro
@NickTheGeek5 жыл бұрын
grazie mille, è importante per me avere questo tipo di riscontri!
@vincenzosurdo26204 жыл бұрын
si può mettere la condizione and nel select case ?
@NickTheGeek4 жыл бұрын
Non mi risulta, al massimo puoi annidare più Select. Puoi farmi un esempio di cosa volevi fare con l'and?
@vincenzosurdo26204 жыл бұрын
@@NickTheGeek era solo una curiosità immagino che si può annidare un IF all'interno del CASE cmq ti faccio i miei complimenti per la serietà e la professionalità che dedichi al tuo canale
@NickTheGeek4 жыл бұрын
Grazie per i complimenti. Riguardo i Select annidati, ti lascio un esempio nel caso possa tornare utile: Select Case Cells(1, 1) Case "x" Select Case Cells(2, 2) Case "x": MsgBox "in A1 e in B2 c'è una x" Case "y": MsgBox "in A1 c'è una x e in B2 una y" End Select Case "y" Select Case Cells(2, 2) Case "x": MsgBox "in A1 c'è una y e in B2 una x" Case "y": MsgBox "in A1 e in B2 c'è una y" End Select End Select In sostanza il Select principale controlla il contenuto della cella A1, mentre quelli secondari controllano la cella B2.
@giancarlogherlone74354 жыл бұрын
E' possibile programmare un timer?
@NickTheGeek4 жыл бұрын
Con un po' di codice probabilmente sì, a cosa ti serve esattamente?
@giancarlogherlone74354 жыл бұрын
@@NickTheGeek niente in particolare è solo uno studio
@NickTheGeek4 жыл бұрын
Se vuoi attendere qualche secondo tra un'istruzione e la successiva puoi usare Wait (tra le due istruzioni): Application.Wait Now + TimeValue("00:00:05") In questo modo crei un intervallo di 5 secondi prima dell'istruzione successiva. Se invece vuoi ritardare l'esecuzione di una subroutine, puoi usare OnTime: Application.OnTime TimeValue("23:00:00"), "test" In questo modo la sub test viene lanciata alle 23 (dell'orologio del computer). Altrimenti: Application.OnTime Now + TimeValue("00:01:00"), "test" in questo modo lanci la sub test 1 minuto dopo aver passato questa istruzione (Now è il momento attuale)
@adrianagallo80274 жыл бұрын
NickTheGeek Ti ringrazio per la risposta. Seguo con molta attenzione le tue lezioni che trovo chiare e molto utili per lo studio del VBA.
@giancarlogherlone74354 жыл бұрын
Scusa mi sono spiegato male, ma su youtube ho trovato un programma che genera un timer con dei pulsanti che lo fermano e lo fanno riavviare.
@NickTheGeek4 жыл бұрын
allora probabilmente la macro farà modificare il valore del timer ad ogni intervallo di 1 secondo; ma il timer è dentro una userform o in una cella del foglio?
@giancarlogherlone74354 жыл бұрын
@@NickTheGeek Ci sono tre macro nello stesso modulo con poche istruzioni, il timer è visualizzato in una cella del foglio. Le tre macro sono attivate da pulsanti del foglio excel.
@NickTheGeek4 жыл бұрын
Se non riesci a capire come funziona questo timer, prova a linkarmi il video qui, vedo se posso aiutarti
@giancarlogherlone74354 жыл бұрын
@@NickTheGeek Non so come fare a linkarti il video però posso scriverti i codici delle 3 macro.Sul foglio excel ci sono 3 pulsanti. ------------------------------------------------------------------------------------------------------------------------------------------------------- Public interval as Date Sub timer () If Range("a1") . Value= 0 Then exit sub Range("a1")=Range("a1")-TimeValue("00:00:01") interval=Now + TimeValue("00:00:01") Application.OnTime interval , timer End sub --------------------------------------------------------------------------------------------------------------------------------------------------------- Sub stop_timer Application.OnTime Earliest:=interval,procedure:="timer" , Schedule:= False End sub ---------------------------------------------------------------------------------------------------------------------------------------------------------- Sub reset_timer Dim valore as variant valore=cells(2,1) Range("a1") . Value="00:00:01" Range("a1") =inputBox ("tempo") End sub
@NickTheGeek4 жыл бұрын
Senza vedere il foglio e come i tasti sono collegati alle macro posso solo andare a intuito, comunque da quello che ho capito: 1) la sub timer fa partire e scorrere il contatore in questo modo: ad ogni secondo che passa a partire da ora + 1 secondo (Application.OnTime interval , timer), fa scendere il valore della cella A1 di 1 secondo (Range("a1")=Range("a1")-TimeValue("00:00:01"). OnTime vuole almeno 2 parametri: il momento di partenza e la procedura da far partire: in questo caso il momento di partenza è interval (quindi il momento attuale + 1 secondo), mentre la procedura è la stessa sub timer, quindi è ricorsiva in quanto viene rieseguita ad ogni secondo. Inoltre all'inizio c'è un controllo che se se A1 = 0 allora la sub termina. 2) la sub stop_timer fa semplicemente fermare il timer, tramite il parametro Schedule:=False (ciò è possibile perché gli altri due parametri, cioè interval e timer, sono identici a quelli della OnTime presente nella sub timer) 3) la sub reset_timer chiede di inserire un certo tempo tramite la inputbox, poi lo scrive in A1 In generale il codice mi sembra abbastanza complicato, nel senso che probabilmente si poteva fare tutto con meno righe, e in particolare ci sono due cose che non capisco: 1) nella sub stop_timer il primo parametro dovrebbe essere EarliestTime, non Earliest 2) nella sub reset_timer viene dichiarata la variabile valore, e le viene anche assegnato il valore contenuto in A2, ma poi non viene più utilizzata in alcuna sub quindi non ne capisco il significato Fammi sapere se mi sono spiegato chiaramente.