Open a form (action on a ribbon button): one drawn form for several
buttons. Each button sets its window title and its own label texts, and
after OK calls a procedure with the inputs – in the fields' tab order.
Cancel or the X end without an error. The editor shows how the procedure is
called and which parameters it needs. Details under
One form for several buttons.
Dry run: step through an action's generated code line by line with F8,
like in the VBE. The form appears the way this button opens it, and after OK
you see which procedure would be called with which values. Nothing is
executed; your own VBA you still test in Excel.
Duplicate form: copy button next to the form in the list.
On the form: below the palette, all controls as a list. The ones you
cannot see on the canvas are marked – hidden underneath another, empty label,
outside the form.
Rename a module via a pencil, in the list and in the editor header. An
invalid name now says why (accented letter, space, already taken).
Changed
Form properties are compact, like the VBE properties window, and
collapsible. The code fills the rest of the column, Expand opens it in a
wide window.
Saving is faster and shows its state: Unsaved, Saving …, Saved.
Option Explicit only appears in the export where you write it
yourself – form code included.
Fixed
Changing something in a form and switching straight to the modules could lose
the form change: the new page loaded the old state and saved it over the
change on the next edit.
Controls and form names counted as undeclared in form code
(v_Anlage = v_Anlage.Value got two marks).
Excel import: modules in UTF‑8 – code page 65001, or once passed through a
UTF‑8 editor – arrived with broken accented letters (“Länge”). Characters
already lost in the workbook (�) are now reported by the import, and the
project check finds them in existing projects too.
Icon designer
Added
Icon designer: combine a main icon and a small badge in a corner into
one icon, for instance a file with a download arrow. Both layers come from
Bootstrap, Streamline, the Office icons or your own icons. Reachable via Icon designer in
the picker, Design icon in the icon library, and the layers button on a
control. The main icon is removed under the whole badge; Knock out adds a
gap that follows the badge's shape. Details under
Combining icons.
My icons in the picker reloads when you come back from another tab, so an
icon you just saved is there straight away.
Bring in a ribbon from Excel, and the cell preview
Added
From Excel (Pro): a ribbon you built by hand in Excel comes into the
project. You choose the .exportedUI (Customize Ribbon › Export) and, if
the code should come along, the workbook with the macros (.xlsm, .xlam,
PERSONAL.XLSB). The code of the standard modules is taken over unchanged,
each button calls its macro. Choosing only the .exportedUI works too: the
review lets you add the workbook afterwards. Both files are read in the
browser, nothing is uploaded. What does not come along is listed in the
review.
Cell preview under the ribbon view, in every plan: drop an Excel file in
and it appears with name box, formula bar and sheet tabs. The file stays in
the browser.
Action steps with sheet or range fields offer Use selection from cell
preview: sheet and range are filled in instead of typed.
Changed
The validation reports control ids named like a Sub. The generated VBA
names a button's Sub after its id; a button named like a Public Sub in a
module gave two subs of the same name and "Ambiguous name detected" in
Excel, with nothing warning about it beforehand.
Fixed
In the icon picker the categories (Office, themes) were cut off at the
bottom.
Dialogs instead of MsgBox
Added
Dialogs under Forms › Dialogs: messages and questions with a symbol,
colour and your own button text instead of the grey MsgBox. Ten templates
to adapt, or start blank. Borderless with rounded corners by default.
Placeholders such as {customer} in the text become parameters of the
call, with a default from the editor.
New action Show own dialog: a dialog on a ribbon button without code.
The second button ends the remaining steps.
Dialogs are in every plan, one on Free. The Forms area is therefore
open to everyone; UserForms themselves stay Pro.
Code tester as a ready-made block in the control palette: a window in
the add-in to type VBA and run it with one click — borderless in the style
of the dialogs, running in a hidden helper workbook. Free and Pro.
Up to 50 forms per project instead of 20, and every limit is now listed
in one place in the docs under Export › Limits.
Contextual tabs: a tab can now appear only while a table, chart,
PivotTable, picture or shape is selected – next to Excel's own table and
chart tools, shown by Excel itself.
Groups in Excel's own tabs: instead of a tab of its own, an add-in's
groups can now sit in Home, Data or another Excel tab – at the end, or
before or after a particular Excel group.
Rules on tabs and groups: whole tabs and groups can be shown and hidden
by condition, with two new conditions – "the selection is in a table" and
"the active sheet is named …".
Rules follow Excel: whether a button is enabled or a group visible is
now re-checked on every selection, sheet and workbook change, not only after
a click in the add-in.
Fixed
Loading a project file into an existing project now brings forms and
dialogs along. They were in the file before but were left out when
merging. Duplicate names get a number; a renamed dialog takes the buttons
that call it along.
The import review warns about duplicate names: if a Sub or public
constant from the file already exists in the project, the dialog says so,
with where, before anything is applied — otherwise it would only surface
on export. The button then reads “Import anyway”.
Two modules each with a Private Sub of the same name counted as a
conflict and blocked the export. VBA allows it; the check now does too.
The import review now shows and counts the VBA code of forms too. And
its figures are recomputed from the file's content when reading, instead
of trusting what the file claims about itself.
The undeclared-name check reported Unload, hex numbers such as &HFF,
MSForms constants (fm…) and Windows functions brought in with Declare
as undeclared.
Checkout is open
New
Buying without the detour. Starter and Pro now go through a checkout
instead of an email request. The payment window opens on the page you are
already on — losing the context means fewer people come back.
Moving from Starter to Pro costs €40 instead of €69. What you paid for
Starter is credited. The pricing page shows a Starter customer the
difference and marks the tier they already have.
Run into a locked area and the pricing page now answers "why am I here" —
for context menus, forms, modules, Backstage, your own VBA, and exporting
without the watermark.
Changed
The beta label is gone. The prices are the ones that apply.
Polar is the merchant of record; the invoice arrives by email, VAT included.
Both languages, everywhere — down to the generated code
New
The add-in's language can be set. It sits with the other project
settings — in the property panel when nothing is selected — and decides
which language the generated VBA is written in: the comments in the module
and the messages your users see in the finished add-in. It has nothing to
do with the language of the interface: if you work in German and build an
add-in for English colleagues, this is the switch.
The module catalogue speaks both languages. All 21 bundled modules —
comments and message texts alike — follow the project's language. They used
to be German, full stop, so an English customer got them unchanged in their
add-in and their colleagues got the prompt in German.
Fixed
The example project was English, on the German site too. A "Toolbox"
tab, a "Clear Range" button, "Clear every cell on this sheet?" — on
/de/editor/example, the page that makes the first impression. Every
caption now follows the language.
Export and save errors came out in English. Including the most common
ones: "Plan free supports up to 5 buttons per project" is what the German
editor showed. And the other way round, import errors and the whole
validation list came out in German, in the English editor too — 42
messages plus the breadcrumb trail.
Small things in the same vein: seven screen-reader labels and tooltips,
the page description in the browser tab, the three messages the code editor
shows when a rename is refused, and the defaults for newly added elements —
the German editor created a "New Button", the English one a
"Kontrollkästchen".
A button that does something — without a line of VBA
New
Actions. A control now carries either a task from a catalogue or a VBA
body: "create a sheet", "clear a range", "export as PDF", "filter a
column". The generator writes the code at export time — and what comes out
is ordinary VBA. The add-in contains a readable Sub, not a runtime
interpreter, and you can unfold it in the editor whenever you want to look.
14 actions in three groups: Worksheet (create and delete a sheet, write
a cell, clear a range, filter, sort, reset the filter), File (export as
PDF, import and export CSV, append a line) and Flow (ask, notify, write
a log entry). Up to ten steps per control, in the order you give them.
Where a value comes from is part of the action. Every field can be one
of three things: fixed, asked for on click ("which sheet?"), or taken from
context — the active sheet, the current selection. Cancelling a dialog is
not an error: the button simply stops, without a message, and Excel is left
the way it was.
Two switches that are easy to forget. "Pause Excel while running" turns
off screen updating, events and automatic calculation — and every exit
turns them back on, the error path and the cancel path included. And "if
something goes wrong" decides between a message, a silent log entry and
carrying on, rather than leaving the user in front of a half-finished
button.
Changed
The property panel has a switch: Actions or Your own VBA, per
control. Actions can be turned into your own code — that is a one-way
street, because the steps are dissolved in the process, so it asks first.
The same the other way around: switching from your own code to actions
discards it, and asks.
Three tiers — and the free one may do more
Changed
Free is freemium, not a shop window. A free project may do everything
that makes a ribbon — actions and your own VBA in a control — and runs into
quantity rather than capability: one project, five controls, a watermark
comment in the VBA. The four developer areas (modules, context menus,
forms, backstage) stay closed, so the editor keeps showing what Pro is for.
New in between: Starter, €29 one-off. Unlimited projects and controls,
no watermark and no branding button, a library of 25 icons and 25 snippets,
file import and export. A button's behaviour there comes from the action
catalogue.
Pro stays at €69 and is the tier for people who write it themselves:
your own VBA in every control, your own modules, context menus, backstage
profiles and UserForms.
Worth knowing
Starter can do less than Free in exactly one place, and that is
deliberate: Starter is a no-code tool without limits, not a bigger Free.
If you want to keep hand-written VBA, take Pro.
Existing projects keep their code. A project that already contains VBA
today is marked as such and still exports — on any tier. The rule applies
to what is built from now on, not retroactively to work that ran yesterday.
Switching areas no longer clears the address
Fixed
Switching areas rebuilt the address instead of writing into it. It set
?mode=… — and deleted tab and module along with it. Switching back to
"Ribbon UI" even threw the whole address away.
So it decayed step by step: ?mode=modules&tab=…&module=… became
?mode=modules&module=…, then ?mode=modules — and the next reload had
nothing left to restore the selection from. From the outside it looked as
though the editor lost the module at random.
There is now exactly one place that writes to the address, and it merges
a parameter in rather than overwriting the others. Switching areas touches
only mode; the tab and the module stay put.
The module now really does stay put
Fixed
module=… survives a reload. Two faults worked together, and either one
alone would have been enough.
Restoring checked once, at mount, whether the id still existed, and gave
up for good on "no". On a page whose project arrives after mount, the
module genuinely did not exist at that moment — so the id was discarded. It
now waits until the id can be applied.
Meanwhile the writer carried on regardless: it saw the default "nothing
selected" and deleted the very parameter restoring was waiting for.
That is why the address was shorter after a reload and the editor came up
empty. A parameter still needed is now left alone.
A link pointing at a deleted module does not block the address: as soon as
you select something yourself, the dead id loses its claim.
The local draft no longer throws the view away. Bringing the draft back
reset the area to "Ribbon" and the selection to nothing — right for a
different project, wrong for the same one. Bringing it back now swaps only
the project.
“Exit Sub” is no longer an error
Fixed
Exit Sub is no longer drawn in red. Monaco's VB definition declares
pairs such as Sub/End Sub and If/End If as brackets, and bracket
colouring then paints them by nesting depth. The Sub in Exit Sub is
neither an opener nor a closer, though — it had no partner and so counted as
an orphaned closing bracket: red, as if the line were broken.
The same explains why End If was green and End Sub blue. That was never a
statement about the code, only about nesting depth.
The colouring is off now. Every keyword is blue, as in the VBE, and colour no
longer carries a meaning it cannot keep. What is actually wrong the editor
says through its markers: a yellow highlight for an undeclared name, a red
squiggle for a structure error.
A warning and an error now look different
Fixed
No more squiggle under the yellow highlight. The name is highlighted —
that is the statement, and an underline beside it says the same thing a
second time. Amber on amber also read as an angry red at 12px, which is
precisely what a warning should not be.
The two levels now differ in kind, not merely in colour: a warning is a
highlighted name, an error is a red underline. The tick on the scrollbar
stays in both cases, so a finding is still easy to locate in a long module.
Structure errors speak English when the editor does. “Sub block is not
closed” and the linter's other messages were hardcoded in German — the
English editor reported them in German. The linter now returns the finding
rather than a finished sentence, and the surface translates it. A missing
message is caught too: the catalogue check compares both languages on every
build.
Advice no longer looks like an error
Fixed
A missing Option Explicit no longer marks any code. A marker needs a
range, and this finding had none of its own — so it took line 1 and coloured
whatever stood there. In an ordinary module that is a perfectly correct Sub
header, and it read as though something were wrong with the Sub.
The hint now sits above the code, muted, with a button that inserts the
line. That also fits what it is: advice, not a defect. The module compiles
without the line, and anyone who does not want it can simply leave the hint
standing.
Yellow is thereby reserved for what actually goes wrong: a name nobody
declared.
Two things in the code editor that did not do what they should
Fixed
Undeclared names are highlighted in yellow now, not merely underlined.
The warning was there the whole time — but it consisted of a three-pixel
squiggle under a six-character name at 12px, which is something nobody sees.
The name itself is marked now, the way a highlighter would. Errors
deliberately get no such background: the structure linter marks whole lines,
and a fully red line would make the half-written block you always have while
typing look like a disaster.
Enter ends the line on the first press. With the suggestion list open,
the first Enter accepted a suggestion — usually with no visible change — and
only the second broke the line, which made the automatic End Sub look like
it needed two attempts. Tab takes the suggestion now, as in the VBE;
Enter always breaks the line.
Nothing is suggested on the header of a procedure. There you are giving a
new name rather than calling an existing one — and because the name you are
typing is itself in the index, Sub test123 was offered test123() back.
New
Sub Foo gets its parentheses on Enter, exactly as in the VBE: Sub Foo
becomes Sub Foo(), End Sub goes below it, and the caret sits indented in
between. A header that already has a parameter list is left alone, and a
single undo takes both back — it was one keystroke, after all.
The address remembers where you were
Fixed
A reload landed back on the ribbon.Context menus and Forms are
their own addresses, so they always worked; Ribbon UI, Modules and
Backstage share one address and were session state only. The area is in
the URL now.
What is selected inside stays too: ?tab= for the ribbon tab, plus
?module=, ?menu= and ?form=. A reload lands exactly where you were —
and a link to a spot in the project can be shared.
A link pointing at something that no longer exists is ignored rather than
producing an empty selection.
A module with Option Explicit on its first line was reported as an
error ("must start with Sub Name()"). That rule belongs to a control's
code, not to a module, where Option Explicit, Dim, Const, Type and
Enum rightly stand before the first Sub. It contradicted the warning
that asks for exactly that line.
The Excel object model in the editor
New
Member completion. After a dot, the object's properties and methods are
in the list, with the description from Microsoft's documentation. 46 objects,
around 2200 members — the ones that turn up in add-in code.
The editor reads your declarations.Dim ws As Worksheet is enough for
ws. to show the right thing. The global names (Application,
ActiveSheet, ThisWorkbook, Selection, Range, Cells …) are known
anyway.
Chains, as long as the documentation names the return type:
ws.Range("A1").Interior. shows the Interior members. Where no type is
documented the chain stops and nothing is offered — better no suggestions
than the wrong object's.
2244 constants such as xlUp or xlValues, from two typed characters
on, with their enumeration and value.
Undeclared names are marked. The same check Excel performs when
compiling, only immediately and without Option Explicit having to be set
for it. The editor knows your declarations, the project's procedures and
public symbols, the module names and the Excel object model with its 2244
constants — and it sees the whole generated module, not just the slice in
front of you.
The catalogue comes from Microsoft's open documentation source
(MicrosoftDocs/VBA-Docs, content
under CC BY 4.0) and is loaded only when you need it — not when the editor
opens.
The code editor behaves like the VBE
New
Keywords are capitalised the moment you leave the line: dim x as long
becomes Dim x As Long. It doubles as a check — a word that is not
capitalised is not the keyword you took it for. Your own names, strings and
comments are left alone.
Blocks close themselves. Enter after Sub Foo() writes End Sub below,
and the same for If … Then, For, Do, With, Select Case,
Function, Property, Type and Enum — only when the closer is actually
missing. A single-line If x Then Exit Sub gets none; VBA closes that
itself.
Parameter hints while typing the arguments, with the current parameter
highlighted.
Go to declaration (F12, Ctrl-click) and rename (F2) for
procedures in the same module. When the procedure lives elsewhere, hovering
shows its signature and where it comes from.
A warning when Option Explicit is missing — in modules you write
yourself. Without the line, a typo in a variable name makes VBA silently
create a new, empty variable instead of reporting an error: the result is
simply wrong, with nothing anywhere to show for it. The modules addin.studio
generates already carry the line.
Form designer
Added
Form designer as its own area in the editor. Drag controls onto a point
grid, resize them, set properties, attach VBA per event. Label, text box,
combo box, list box, check box, option button, toggle button and command
button are included.
The export writes a real designer into the .xlam. The form shows up in
the VBA editor and can be edited further there.
When a control hangs over the edge, the warning names the size the form would
need, and a button applies it.
Changed
The landing page now names what the product actually does. Context menus,
backstage profiles, forms, import/export and the dynamic callbacks were
missing from it entirely.
While the beta runs, Pro is available on request rather than through a
checkout.
Fixed
The history panel showed raw key names for module actions and labelled
everything outside the ribbon as a context menu change.
The VBA linter demanded a full Sub declaration in the event field, where
only the body belongs.
Folders in the icon library, icons saved with their colour
New
Folders in the icon library. Create, rename and delete them under
Icons. Each folder appears as a tab under My icons in a project's icon
picker.
Save catalogue icons into the library via From catalogue — colour
included. The same Bootstrap icon in three colours is three entries, each one
adjustable later through Change colour. Your palette is set up once and
picked from in every project, instead of being reconfigured per project.
Changed
A library entry no longer has to be an uploaded file. A catalogue entry
stores the reference plus the colour: it stays a vector, does not count
against storage, and recolouring needs no re-render.
Library export and import carry both kinds, folder names included. Catalogue
entries travel as plain JSON, with no image data.
Deleting a folder does not delete its icons — they end up under No folder.
For an upload it would otherwise be the only copy of the file.
Fixed
The Open example project button in the closing section of the landing page
was unreadably dark. Its CSS class was called invert, colliding with a
Tailwind utility of the same name that colour-inverted the finished button.
The documentation search could not be closed with Escape.
The logo in the top left leads back out of the app to the landing page.
Autocomplete for your own procedures
New
Suggestions for your own Subs and Functions in the code editor, while
typing and by itself after Call . With the signature beside the name and
the module, form or control the procedure comes from. By hand via
Ctrl+Shift+Space, on a Mac Cmd+Shift+Space — Monaco's own Ctrl+Space
sits under the macOS input-source switcher there.
Only what VBA would find here is suggested. Public from your own modules
everywhere; Private only inside its own module; the code of all controls
shares one generated module and therefore sees itself; a form is a class
module and keeps to itself.
After Call the insert uses parentheses, without Call it does not. Both
are valid VBA, but they are not interchangeable.
Changed
The parser that used to look for duplicate names now also reads visibility,
kind and parameter list. Suggestions and validation come from one source —
what is offered exists.
Documentation, search, and a note after the export
New
Documentation at /docs: seven pages, from the first steps through
ribbon, code, forms, context menus and backstage to export and installation.
Plus this changelog.
Full-text search on Cmd+K or Ctrl+K, and / works too. It covers
every page and the changelog and jumps straight to the matching section. The
index is built at build time and served from our own address — the search
runs in your browser, nothing goes to a search service.
A note after the export. Double-clicking the .xlam installs nothing:
Excel opens it as a workbook, the ribbon stays away, and there is no error to
tell you so. The note says exactly that and points at the four steps in the
documentation.
Catalog, dynamic callbacks and sharper validation
Added
Catalog of ready-made modules. Prepared VBA building blocks straight into
your project, newly including a “Dialogs” category with 23 ready MsgBoxes.
Dynamic callbacks. Buttons can be enabled, hidden or relabelled depending
on state. That generates getEnabled, getVisible and getLabel.
Changed
Validation now covers the whole VBA namespace rather than procedure names
alone: Public Const, public variables, Type and Enum all count. A
duplicate there used to fail only in Excel, with a message pointing somewhere
else.
Findings are marked in the structure tree and roll up to group and tab, so a
collapsed branch does not stay silent.