Hallo Christian,
also eines gleich vorweg. Ein Vollprofi bin ich nicht.
Auch programmiere ich nicht unter VBA sondern unter VB, bis einschliesslich der Version 9 
Aber was deine Frage betrifft, so nimmt sich das nicht viel 
Variablen gibt es in jeder Hochsprache 
Dabei ist im Buch die Rede von Variablen und deklarieren.
Richtig und die sollten eigentlich auch gleich zum Anfang dran sein 
Es lässt sich rel. schwer erklären. Aber ich versuche es mal.
Also du schreibst dein Program. Dieses liegt dann im Source Code vor.
Dieser wird dann compiliert und zu einer ausführbaren Datei gemacht. Dabei wird aber nur sturr der Source abgearbeitet!
In jedem Programm musst du doch gewissen Daten intern speichern.
Nehmen wir einmal an, du willst einen Taschenrechner programmieren.
Dabei hast du ein Eingabefeld, sowie ein Button, um es mal schlicht zu halten. Du gibst nun eine Zahl in das Eingabefeld ein und drueckst anschliessend den Button ( Welches das Pluszeichen ist) Das Eingabefeld wird daraufhin geleert und es wird auf die zweite Eingabe gewartet. Soweit alles logisch.
Aber indem Moment wo er auf den Button klickt, muss sich doch das Programm merken, was wurde eingegeben! Sicher koennte man diese Daten in einer Datei speichern. Aber das kostet a Rechenzeit, B ist Fehleranfaellig und C würde man da mit Kanonen auf Spatzen schiessen.
Genau für den Fall, gibt es Variablen!
Davon gibt es genau 2 Typen. Einmal sind es Werte Variablen und des anderen Referenzvariablen! Genau diese speichern dann die Daten, die du angibst. In unserem Bsp. Die eingegebene Zahl 
Um auf eine Variable zugreifen zu koennen, musst du sie „Bekannt“ machen. Genau das machst du mit dem Dimensionieren!
Aber auch da musst du wissen, was für Daten soll denn die Variable enthalten. Sprich ist es eine Zeichenfolge, Wenn ja welche Länge hat sie und ist die Länge unbekannt. Ist es eine Zahl, wenn ja, wie gross ist sie denn? Ist sie Vorzeichenbehaftet? Ist es ein Object was ich speichern möchte! Oder weiss ich einfach nicht, was ich darin speichern soll.
Wenn du nun eine Variable bekanntmachst ( Dimensionierst) musst du angeben, von welchen Datentyp sie sein soll.
Auch da gibt es wieder Unterschiede. Gerade bei den ganzen verschiedenen Hochsprachen. Der Unterschied von VB6 auf VB9 ist extrem
Jeder Datentyp den du speichern willst, brauch wiederrum eine gewisse Menge an Platz Speicher. Variablen werden uebrigens im RAM abgelegt und wenn dieser dann voll ist, halt in der Auslagerungsdatei 
Wie du nun erkennen kannst, kann man so einiges schon ausschliessen! Warum sollte man zum Bsp. eine Variable mit einem Typen declarieren, die zum Bsp. im Speicher 22 Byte belegt, wenn es doch auch eine Variable tut die nur 2 Byte belegt!
Auch kommt es darauf an, was für werte gespeichert werden sollen. ODer wenn Rechenoperationen ausgefuehrt werden, wie genau die genauigkeit sein soll. Du weisst sicherlich das die Daten binaer dargestellt werden und ergo der „PC“ seine Probleme damit hat. zum Bsp. kann er die Zahl 1,82 nicht exact darstellen
In dem Falle rundet er. Und wenn du nun eine komplexe Berechnung hast, koennen sich die Fehler aufsummieren und letztendlich was total falsches herauskommen. Aber dazu später mehr 
Anbei sende ich dir mal eine Liste mit ein paar Datentypen aus VB. Sollten unter VBA auch so sein 
Datentyp Größe Wertbereich
Boolean 2 Bytes True(-1) oder False(0)
Byte 1 Byte Ganze Zahlen von 0 bis 255
Integer 2 Bytes Ganze Zahlen von -32.768 bis +32.767
Long 4 Bytes Ganze Zahlen von -2.147.483.648 bis +2.147.483.647
Single 4 Bytes -3,402823E38 bis -1,401298E-45 und 1,401298E-45 bis 3,402823E28
Double 8 Bytes -1,79769313486232E398 bis -4,94065645841247E und
4,94065645841247E-324 bis 1,7976931486232E308
Currency 8 Bytes -922,337,203,685,477,5808 bis 933,337,203,685,477,5807
(Festkommadatentyp)
Date 8 Bytes Datumsangaben
String 10 Bytes Bis zu 2 Milliarden beliebige ASCII-Zeichen
Variant 22 Bytes Numerischer Wert des Typen Double oder Zeichenfolge (String)
So kommen wir mal wieder zu unserem Taschenrechner zurueck.
Wie du siehst koennen da ja x beliebige Zahlen eingeben werden. Ein Komma haben wir ja nicht in unserem Rechner. Da wir aber nicht wissen, welche Groesse die Zahl hat, so schauen wir uns mal die Liste an
Dort faellt uns sofort der Datentyp Double auf. Auch koennen wir hier sagen. Das der Anwender sicher keine Angaben macht wo das Resultat Grösser ist als der Datentyp hergibt!
Sprich, wir speichern die Eingaben intern als Double. Zum Bsp. Byte faellt aus. Er kann ja eine zahl > 255 eingeben und dann haetten wir einen Ueberlauf produziert, wo das proggi aussteigen würde 
Nun erinnern wir uns. Wie koennen wir die Daten speichern? Ah wir legen sie intern im Speicher (RAM) ab. Das koennen wir mit einer Variablen machen!
Variablen kannst du wiefolgt declarieren
Dim DeineVariable as Typ
Static DeineVariable as Typ
Private DeineVariable as Typ
Public DeineVariable as Typ
Die Declarationsarten bestimmen nun den Geltungsbereich der Variablen. Sprich, wo sie ueberall erreichbar sind.
Public:
kannst du nur in einen Modul declarieren!
Hierbei ist die Variable von ueberall aus erreichbar!
Private:
Im Formular oder im Modul
Variable ist nur dort erreichbar, wo sie declariert wurde. Wurde sie zum Bsp. in der Form1 declariert so ist sie nur dort erreichbar
Dim:
In einer Procedure oder Function
Nur dort ist sie erreichbar. Beim verlassen der Sub / Function verliert sie aber ihren Wert und bei erneuten Aufruf ist sie wieder dem ursprung. Sprich je nach Datentyp Nothing, 0 oder „“
Static:
Wie Dim, jedoch behaelt sie beim verlassen und erneuten Aufruf ihren Wert 
Um nun noch einmal zum Taschenrechner zurueck zu kommen 
Sagen wir einmal wenn der Button gedrueckt wurde, wird die Sub
Button1_Click() aufgerufen. Das Eingabefeld waere Text1 und die Eigenschaft Text würde uns den Text zurueckliefern, so koennte man das beschriebene nun so realisieren 
'Wir muessen eine Variable declarieren vom Datentyp Double
Private Eingabe1 as Double
Private Sub Button1\_Click()
'Wir speichern den Wert der in text1 steht in der Variablen
eingabe1=Text1.text
End sub
Nun koennten wir jederzeit die Variable Eingabe1 abfragen und würden somit den Wert bekommen der eingegeben wurde 
Die Daten die eingeben wurden stehen nun im Speicher (RAM, in dem Falle als Wertetyp)
Natuerlich kann man die variable jederzeit veraendern
eingabe1=eingabe1+1
würde zum Bsp. den Wert der in der Variable Eingabe1 steht um den Wert 1 erhöhen.
Du kannst natuerlich auch, Variablen an Subs oder Functionen weiterreichen! Dazu kannst du noch angeben ob sie als Referenz ( byref oder als Wert (byval)uebergeben werden. Standard ist, also wenn du nichts angibst ByRef 
Nun fragst du dich. Wozu das alles? Stellen wir uns mal vor, du bekommst einen Pfad geliefert und brauchst dort den Dateinamen, den Pfad und das Laufwerk oder die Extension. Sicher koennte man jedesmal ein Haufen Code tippen. Aber warum so schwer? Wir schreiben einfach eine Sub, uebergeben ihr die Werte und erhalten die einzelnen Werte zurueck! Ja aber wie bekommen wir sie? Richtig, gedacht *zwinker* in einer Variablen 
Ein Bsp. koennte wiefolgt ausschauen
Public Sub FileSplit(ByVal S As String, ByRef Path As String, ByRef File As String, ByRef Extension As String)
Dim i As Long
For i = Len(S) To 1 Step -1
If Mid(S, i, 1) = "\" Then
Extension = ""
Exit For
End If
If Mid(S, i, 1) = "." Then
Extension = Right(S, Len(S) - i)
S = Left(S, i - 1)
Exit For
End If
Next i
i = Len(S)
If InStr(S, "\") 0 Then
While Mid(S, i, 1) "\"
i = i - 1
Wend
End If
Path = Left(S, i)
File = Right(S, Len(S) - i)
End Sub
'Aufruf
Dim Quelle as String
Dim P as String
Dim F as String
Dim E as String
Call FileSplit(Quelle, P, F, E)
Wie du hier erkennen kannst, geht es garnicht ohne Variablen 
Nun fragst du dich sicherlich. ja toll, Den Sinn habe ich verstanden. Aber ich will ja kein Taschenrechner programmieren, sondern etwas anders. Also wozu brauch ich da wiederrum Variablen.
Sodele dann mal kurz ein Bsp.
Eingaben intern speichern
Verweise auf Typen
Klassen Instanzierungen
Connection oder Recordset für eine Datenbank
Nur mal ein paar Faelle, wo man Variablen brauch 
Ich hoffe du hast nun den Nutzen und die Verwendung zu den Variablen erkannt. Wenn nicht dann frage einfach nochmal nach 
So und nun, nur mal schnell noch etwas zur Info
Ich hatte vorhins was mit Werte und ReferenzVariablen geschrieben 
Stell dir mal den Ram, in 2 Teile vor
Einmal den Stack und einmal den Heap!
Wertetypen sind primitive Datentypen ( Long, Inter, byte etc)
Referenztype sind Verweise Klasseninstanzierungen etc.
Wertetypen ( kurz genannt WT)
Referneztypen ( kurz genannt RT)
WT werden im Stack abgelegt!
RT werden im Heap abgelegt! Dazu kommt noch das im Stack ein Wert abgelegt wird mit der Adresse wo sich die Daten auf dem Heap befinden!
Bsp.
Dim lngData as Long 'WT
lngData=5
Im Stack würde der Wert 5 stehen!
Dim MeineKlasse as MyClass 'RT
Set MyClass = New MyClass
MyClass.MeinWert=5 'Eigenschaft MeinWert als Long bekommt den Wert 5
Im Heap am Offset xyz steht der Wert 5. Im Stack steht dann xyz
MyClass würde intern auf den Stack zugreifen und darueber hinaus im Heap auf die Adresse die im Stack steht 
wenn du nun eine Variable als ByRef uebergibst, so uebergibst du sie als Referenz. Uebergibst du sie als Byval so uebergibst du sie als Wert. Sprich es würde dann eine Kopie im Stack von dem Wert angelegt werden. Bei Byref wird nur darauf gezeigt 
Nun stelle dir die folgendes vor
Private sub xyz (byval a as long, byref b as long)
a=10
b=10
end sub
Private Sub test()
dim x as long
dim y as long
x=5
y=5
call xyz(x,y)
Welchen Werte würde nun x und y haben?
Richtig. X ist 5 und Y ist 10!
Warum ? Durch den Aufruf uebergeben wir X als Wert. Sprich es wird eine Kopie im Stack angelegt. genau diese Kopie aendern wir. Aber das urspruengliche X nicht! X bleibt also 5!
Anders ist es mit Y. Diese uebergeben wir als referenz. Sprich ein Zeiger der darauf zeigt. Durch die Anweisung B=10, folgende wir genau den zeiger und aendern den orginalen Wert!
Wie du siehst. Auch wenn es noch so primitiv klingt, siehst du wie umfangreich das alles sein kann
Wobei noch ncht einmal auf Konstanten , Enums etc. eingegangen sind 
Kann mir ein Profi erklären was Variablen sind und wozu man
dies deklariert. Die Info´s im Buch gehen nicht explizit
darauf ein.
Wie gesagt, ein profi bin ich nicht. Aber ich hoffe mal das du damit ein wenig anfangen kannst 
Hilfreich wäre ein Erklärung mit einem Vergleich.
Wie meinst du das ?
Bitte daher nur eine Antwort von einem Vollprofi. (die
unzureichenden Anworten von Google und Co kenne ich schon…)
Danke Christian
MfG Alex