Questions And Answers

More Tutorials

VBA Interfaces

Multiple Interfaces in One Class - Flyable and Swimable

Using the Flyable example as a starting point, we can add a second interface, Swimmable, with the following code:

Sub Swim()
 ' No code
End Sub

The Duck object can Implement both flying and swimming:

Implements Flyable
Implements Swimmable
Public Sub Flyable_Fly()
 Debug.Print "Flying With Wings!"
End Sub
Public Function Flyable_GetAltitude() As Long
 Flyable_GetAltitude = 30
End Function
Public Sub Swimmable_Swim()
 Debug.Print "Floating on the water"
End Sub

A Fish class can implement Swimmable, too:

Implements Swimmable
Public Sub Swimmable_Swim()
 Debug.Print "Swimming under the water"
End Sub

Now, we can see that the Duck object can be passed to a Sub as a Flyable on one hand, and a Swimmable on the other:

Sub InterfaceTest()
Dim MyDuck As New Duck
Dim MyAirplane As New Airplane
Dim MyFish As New Fish
Debug.Print "Fly Check..."
FlyAndCheckAltitude MyDuck
FlyAndCheckAltitude MyAirplane
Debug.Print "Swim Check..."
TrySwimming MyDuck
TrySwimming MyFish
End Sub
Public Sub FlyAndCheckAltitude(F As Flyable)
 Debug.Print F.GetAltitude
End Sub
Public Sub TrySwimming(S As Swimmable)
End Sub

The output of this code is:

Fly Check...

Flying With Wings!


Flying With Jet Engines!


Swim Check...

Floating on the water

Swimming under the water


In this page (written and validated by ) you learned about VBA Interfaces . What's Next? If you are interested in completing VBA tutorial, your next topic will be learning about: VBA Recursion.

Incorrect info or code snippet? We take very seriously the accuracy of the information provided on our website. We also make sure to test all snippets and examples provided for each section. If you find any incorrect information, please send us an email about the issue:

Share On:

Mockstacks was launched to help beginners learn programming languages; the site is optimized with no Ads as, Ads might slow down the performance. We also don't track any personal information; we also don't collect any kind of data unless the user provided us a corrected information. Almost all examples have been tested. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. By using, you agree to have read and accepted our terms of use, cookies and privacy policy.