Salta ai contenuti

Accesso agli oggetti Excel dal codice VBA compilato

Quando si scrive codice per il compilatore VBA, occorre utilizzare esplicitamente l’oggetto Application per accedere al modello a oggetti di Excel.

Per un riferimento dettagliato delle proprietà e dei metodi disponibili, consultare la documentazione del Microsoft Office Dev Center.

Per fare riferimento a una cella o a un intervallo di celle nel foglio di calcolo, occorre anteporre Application all’oggetto Range.

  • VBA standard: Range("A1:A4").Value = 2
  • VBA compilato: Application.Range("A1:A4").Value = 2

Utilizzo delle funzioni del foglio di calcolo

Section titled “Utilizzo delle funzioni del foglio di calcolo”

Per utilizzare le funzioni del foglio di calcolo di Excel, occorre utilizzare l’oggetto Application.WorksheetFunction.

Str1 = Application.WorksheetFunction.VLookup(Param1.ComboBox1, Application.Range("A2:C8"), 2, False)

Esempio completo: conversione di una macro

Section titled “Esempio completo: conversione di una macro”

Ecco una macro VBA standard:

Sub test()
Dim qty As Integer
Dim price As Single, amount As Single
Range("A5").Value = "Item"
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = InputBox("Enter the name of item")
ActiveCell.Offset(0, 1).Select
price = InputBox("Enter the price")
ActiveCell.Value = price
' ... and so on
End Sub

Ecco lo stesso codice modificato per il compilatore VBA di XLS Padlock. Si noti l’aggiunta dell’oggetto Application e dei parametri espliciti per InputBox.

Sub test(Param1)
Dim qty As Integer
Dim price As Single, amount As Single
Application.Range("A5").Value = "Item"
Application.ActiveCell.Offset(1, 0).Select
Application.ActiveCell.Value = Application.InputBox("Enter the name of item", "Name", "")
Application.ActiveCell.Offset(0, 1).Select
price = Application.InputBox("Enter the price", "Price", "")
Application.ActiveCell.Value = price
' ... and so on
End Sub

Il modulo VBA originale verrebbe quindi modificato per richiamare la versione compilata:

Sub test()
res = CallXLSPadlockVBA("test", "")
End Sub