Home
VBA risolve problemi e crea opportunità

08 Luglio 2022

VBA risolve problemi e crea opportunità

di

VBA è prezioso per estendere le possibilità degli strumenti già a disposizione, da Excel in poi. Ecco l'esempio di una catena alberghiera.

Come VBA valorizza l’esistente e apre nuove prospettive

Racconto di VBA e dei suoi vantaggi tramite una piccola storia. Qualche anno fa, fui chiamato da una piccola azienda che gestiva per conto dei propri clienti, il servizio di prenotazione camere delle loro strutture ricettive. Si trattava di decine di alberghi medi e piccoli, di pensioni, di appartamenti, di singole camere: qualche centinaio di strutture per migliaia di camere disponibili, in cui ciascuna camera aveva una propria tariffa che variava nel corso dell’anno, tariffe peraltro soggette continuamente a sconti e promozioni.

Tutto il sistema di gestione si basava su un grande foglio Excel con circa 700 colonne per coprire due anni di prenotazioni e più di 7.000 righe: ogni cella individuava la tariffa della singola camera in un determinato giorno indicandone anche lo stato: libera, prenotata, occupata.

Leggi anche: Scaricare dati in Excel usando Visual Basic

Tutti gli hotel utilizzano sistemi di prenotazione alberghiera, ma questo era stato sviluppato in casa con Excel e così permetteva di raggiungere strutture che magari non si sarebbero potuti permettere i costi di gestione di sistemi più complessi.

Quando anche Excel deve prendersi i suoi tempi

I ragazzi dell’azienda di servizio avevano costruito un bellissimo foglio Excel pieno di formule che, semplicemente indicando data, luogo e durata del soggiorno oltre agli sconti e alle promozioni da applicare, verificava se la camera fosse disponibile, ne calcolava la tariffa e, dopo una conferma, effettuava la prenotazione. Ottima idea e ben realizzata.

Ogni casella del foglio conteneva una formula che, utilizzando alcune funzioni SE(), poteva calcolare il risultato finale. Ma, crescendo il numero di camere gestite, i tempi di risposta del sistema inevitabilmente si allungavano moltissimo: occorreva qualche minuto per ottenere la risposta, senza contare che per effettuare la verifica fuori linea (ogni notte) di tutti i dati inseriti occorreva qualche ora.

VBA per superare i limiti intrinseci del foglio di calcolo

L’azienda si pose il problema di come migliorare le prestazioni: cambiare sistema passando da Excel ad Access (o MySQL, con programmi scritti in PHP) avrebbe risolto sicuramente il problema, ma ci sarebbero volute parecchie settimane di addestramento del personale sui database e sul linguaggio SQL di interrogazione delle tabelle. Senza contare tempi e risorse per la progettazione e realizzazione del prodotto, per i test dei risultati; risorse e tempi di cui l’azienda non disponeva.

Una valida alternativa era costituita dai corsi che Apogeo iniziava proprio in quel periodo a proporre. Decidemmo di realizzare un corso VBA mirato alla costruzione delle procedure adatte a risolvere il problema del sistema di prenotazione: quindi un corso che, partendo da zero, insegnasse a costruire prima semplici macro e successivamente procedure via via più complesse per creare quel sistema che in un solo secondo avrebbe ricalcolato tutti i dati della gestione. La conclusione di questa storia è stata la progettazione di un corso VBA mirato ad apprendere le tecniche di programmazione delle procedure e nello stesso tempo a risolvere uno specifico problema.

Perché (e come) VBA

Visual Basic for Applications (VBA) è un sottoinsieme del linguaggio Visual Basic che Microsoft ha creato per sviluppare speciali programmi chiamati macro da utilizzare con Excel e con tutti gli altri applicativi esistenti all’interno del pacchetto MS Office 365, come ad esempio Word, Access, PowerPoint.

Per chi acquista MS Office oppure si abbona a MS Office 365, VBA è già compreso nel pacchetto, ma non può lavorare fuori da Office. Il linguaggio di programmazione VBA viene utilizzato per creare funzioni di Excel, per eseguire i comandi di tutti gli applicativi di Office, per eseguire qualunque operazione in modo automatico, esattamente come un qualsiasi linguaggio di programmazione che può creare tutti programmi che quotidianamente si utilizzano sui PC.

Uno dei vantaggi di VBA è l’essere già compreso nell’applicativo Excel: con tutti gli altri linguaggi di programmazione (quali, ad esempio, PHP, Python, Java eccetera) sarebbe necessario ricorrere a un’interfaccia per operare con Excel, cosa non proprio semplice.

Come si fa l’automazione della produttività individuale

Dalla mia esperienza di docente nei corsi di programmazione, per risolvere un problema di calcolo o per automatizzare un’operazione servono due competenze principali:

  • saper analizzare un problema da un punto di vista razionale, scomponendolo in operazioni semplici, ciascuna delle quali composta da una successione ordinata di singole operazioni, che, eseguite una dopo l’altra, consentono di arrivare all’obiettivo che ci si era proposto;
  • tradurre le operazioni semplici in istruzioni di una procedura, da scrivere utilizzando il linguaggio VBA.

Anche se questo secondo punto può sembrare il più difficile tra i due, in realtà è la prima parte quella più critica.

Un esempio pratico di macro in VBA

Vediamo un piccolo esempio di macro. Un foglio contiene i seguenti valori:

Un foglio di calcolo su cui lavorare con una macro

Un foglio di calcolo esemplificativo cui applicare una macro scritta in Visual Basic for Applications.

Nella cella J2 si deve calcolare la somma dei ricavi: =B2+D2+F2+H2 e nella cella K2 la somma delle quantità: =C2+E2+G2+I2. Se la tabella è piccola lo si può scrivere direttamente ma, se fosse più grande, si potrebbe ricorrere alla seguente macro:

Una macro in VBA

Una macro in VBA.

Questa nuova funzione si può applicare nella seguente formula da copiare in basso fino alla cella J6:

Da una macro VBA a una nuova funzione

Da una macro VBA a una nuova funzione.

La nuova funzione è a tutti gli effetti una macro Excel scritta nel linguaggio VBA.

Immagine di apertura di Kelly Sikkema su Unsplash.

L'autore

  • Francesco Borazzo
    Francesco Borazzo è consulente e formatore e nel corso della sua carriera ha utilizzato Excel per la gestione e l'analisi di insiemi di dati di complessità crescente. È stato docente di informatica alla Scuola di Amministrazione Aziendale dell'Università di Torino e alla Facoltà di Economia dell'Università del Piemonte orientale.

Vuoi rimanere aggiornato?
Iscriviti alla nostra newletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.

Libri che potrebbero interessarti

Tutti i libri

Algoritmi spiegati in modo facile

Guida illustrata per programmatori curiosi

28,41

29,90€ -5%

di Aditya Y. Bhargava


Articoli che potrebbero interessarti

Tutti gli articoli