> ## Content Index
> Fetch the complete content index at: https://nolongerset.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Preview Limitations in twinBASIC
- URL: https://nolongerset.com/preview-limitations-in-twinbasic/
- Published: 2021-04-17T23:10:11.000Z
- Updated: 2026-05-08T13:05:14.000Z
- Description: CAUTION! twinBASIC is a work-in-progress. To avoid frustration, learn what's not working *before* you start playing with it.
- Author: Mike Wolfe
- Tags: twinBASIC, #Import 2026-05-20 02:59

*To learn more about [twinBASIC](https://www.twinbasic.com/), join me at this year's virtual [Access DevCon](https://nolongerset.com/join-me-at-access-devcon-2021/) where I will be presenting this exciting new project from vbWatchdog creator, Wayne Phillips.*

### A work in progress

As I [wrote yesterday](https://nolongerset.com/twinbasics-100-compatibility-goal/), twinBASIC's goal is to achieve 100% backwards compatibility with VB6/VBA. As the project is a work-in-progress, there are several items that are not currently working.

If you're trying out a new language, you can save yourself a lot of frustration by knowing its limitations ahead of time. This list is intended to provide you with the current state of the project's limitations. More importantly, the links at the bottom of the post will help you stay current with realtime updates on the project's progress.

Those links will be your best source for up-to-date information about the twinBASIC project in the weeks and months ahead. I've posted lots of articles on twinBASIC leading up to my DevCon talk this week, but I plan to return to my "regularly scheduled programming" following the conference. I will continue to post about the project, but on an occasional–rather than daily–schedule.

## The Highlights

In this first section, I want to highlight the things that I think are most likely to trip you up at this early stage of the project's development:

### Generic Error Descriptions

You might not think this is a big deal at first, but it's bitten me a few times. On more than one occasion, I've assumed one of my own silly mistakes was actually a bug in twinBASIC. For example, consider this code snippet in twinBASIC:

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-68.png)

Unspecified error. Whatever could that be?

If I run the same code in VBA, my carelessness becomes obvious:

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-70.png)

I make this mistake more than I care to admit.

### The Like Operator

I use the Like operator regularly in my code. If I tried to convert almost any of my standard code library modules, this would almost certainly trip me up:

```vba
If "Test Case" Like "Test*" Then Debug.Print "True"
```

This valid VBA code won't compile in the current preview release of twinBASIC.

### Global/module-level variables not supported

Here's another limitation that will be a major stumbling block when trying to convert existing code to twinBASIC. Note in the screenshot below that even *private* variables declared at the module level are not yet supported.

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-71.png)

### Debug.Print syntax

In VBA, you can separate strings in the Debug.Print statement using semicolons and commas. That syntax is not yet supported in twinBASIC:

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-66.png)

Use this instead: `Debug.Print "Bitness: " & 32 & vbTab & "Year: " & 2021`

### Built-in file operations

The file operations built in to VBA itself are not yet supported. This includes [File Statements](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/2fd9c1be-0d9a-4b29-b5ac-c9d51ce483cf) and the [FileSystem namespace](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/bf77cb3b-1e75-4dad-b849-56d661ce1990) of the standard library. 

The File Statements are `Open`, `Close`, `Reset`, `Seek`, `Lock`, `Unlock`, `Line Input`, `Width`, `Print`, `Write`, `Input`, `Put`, and `Get`. 

The FileSystem functions are `CurDir`, `Dir`, `EOF`, `FileAttr`, `FileDateTime`, `FileLen`, `FreeFile`, `Loc`, `LOF`, and `Seek`. 

The FileSystem subroutines are `ChDir`, `ChDrive`, `FileCopy`, `Kill`, `MkDir`, `RmDir`, and `SetAttr`.

The [FileSystemObject](https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/filesystemobject-object) should be able to provide much of the above functionality until twinBASIC fully implements it.

## The Official List

I've paraphrased the official list of limitations from the twinBASIC [Preview page](https://www.twinbasic.com/preview.html):

- 32-bit only
- Error numbers/descriptions don't match VB
- Global/module-level variables not supported
- Classes can't expose events
- Late-bound calls to twinBASIC classes not supported

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-62.png)

Car must currently be declared `As oVehicle` to reference its properties and methods.

- [Multi-threading](https://www.twinbasic.com/preview.html#multiThread) only supported in debug console
- vbWatchdog support disabled
- Webserver extension library disabled
- [VBA.](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/9a7e0f79-3164-41dd-beda-bcc02dc79d1f)[Interaction](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/9a7e0f79-3164-41dd-beda-bcc02dc79d1f).\* and [VBA.Strings.\*](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/f87cc0fb-f0ca-4875-9691-34d80e2933b0) have limited test coverage
- With blocks not working with user defined types

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-63.png)

The above is valid VB6/VBA syntax.

- **`RegSvr32.exe`** can't be used to register DLLs on other computers
- VS Code sometimes needs to be closed and reopened
- Only one `.twinproj` (source code) file allowed
- VS Code uses excessive memory due to known leak

#### Pending syntax support

The following syntax is not yet supported:

- [File statements](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/2fd9c1be-0d9a-4b29-b5ac-c9d51ce483cf): Open, Write, etc.
- [VBA.FileSystem.\*](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/bf77cb3b-1e75-4dad-b849-56d661ce1990) namespace

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-65.png)

The FileSystem namespace is not yet supported in twinBASIC.

- **Like** operator

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-67.png)

This one is a big issue for converting existing code; hopefully, it gets implemented soon.

- Debug.Print syntax won't allow commas or semi-colons
- [Mid](https://docs.microsoft.com/en-us/office/vba/Language/Reference/user-interface-help/mid-statement) [**statement**](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/2a8f3567-c8e0-4176-a802-cf2edeba425f)(not the [function](https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/mid-function); *did you know there was a statement?*)
- [RSet statement](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/beccdd43-9dad-4bcf-b063-e542869917a1)
- [GoSub statement](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/492e1f84-c47f-40ef-819f-f1d23e475c91)
- [DefType syntax](https://docs.microsoft.com/en-us/openspecs/microsoft%5Fgeneral%5Fpurpose%5Fprogramming%5Flanguages/ms-vbal/8865edf3-62ab-4eb7-aa13-c628aef9ccc2)

### The GitHub project

Wayne has created a [GitHub project](https://github.com/WaynePhillipsEA/twinbasic) to track bugs and feature requests. twinBASIC itself is not open-source; however, GitHub provides an easy and familiar way for developers to report issues as they come up.

Wayne created a couple of templates to help maintain the quality of reported issues:

- [Bug report template](https://github.com/WaynePhillipsEA/twinbasic/blob/main/.github/ISSUE%5FTEMPLATE/bug%5Freport.md)
- [Feature request template](https://github.com/WaynePhillipsEA/twinbasic/blob/main/.github/ISSUE%5FTEMPLATE/feature%5Frequest.md)

To track progress on the features that are known limitations, use [this search string](https://github.com/WaynePhillipsEA/twinbasic/issues?q=is%3Aissue+%22limitation+with+the+preview+release%22):

```
is:issue "limitation with the preview release"
```

### The VS Code Changelog

As Wayne and his team address issues, they reference them in the twinBASIC Changelog tab of the VS Code extension:

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/04/image-61.png)

Bug fixes in twinBASIC's Changelog now tie back to GitHub.

## My Advice

I recommend you hold off on trying to convert large blocks of existing VBA code to twinBASIC until some more of the core functionality is in place. In the meantime, play around with the development environment by writing code that takes advantage of the new features of the language.

*Image by [Hany Alashkar](https://pixabay.com/users/hanyalashkar-14309275/?utm%5Fsource=link-attribution&utm%5Fmedium=referral&utm%5Fcampaign=image&utm%5Fcontent=5043609) from [Pixabay](https://pixabay.com/?utm%5Fsource=link-attribution&utm%5Fmedium=referral&utm%5Fcampaign=image&utm%5Fcontent=5043609)*