Release note · August 3, 2026

A worksheet control can retarget a macro without a cell changing

By SybilGambleyyu · FormulaFence 0.225.0 and WCAB 0.44.1

A spreadsheet can keep every ordinary cell, formula, and saved calculation stable while a clickable worksheet control changes which macro it names. That is a review boundary that a cell diff can miss. It is also a boundary where the safest result is deliberately small: record the stored assignment change, preserve the surrounding package evidence, and do not turn a review tool into a macro runner.

Microsoft's Excel guidance documents assigning macros to Form and ActiveX controls. The new Workbook Change Assurance Benchmark (WCAB) 0.44.1 makes the persisted Form-control side of that workflow testable, while FormulaFence supplies the existing critical control-change evidence.

The important thing is not a cell

The generated pair has one relationship-bound worksheet Form control. Its worksheet declaration, control-properties part, relationship, content type, ordinary Controls!B2=12 input, Controls!D2=B2*C2 formula, and direct Dashboard!B4=Controls!$D$2 consumer remain fixed. The sole package difference is one private inline macro-assignment attribute in xl/worksheets/sheet1.xml.

The fixture contains no VBA project or macro payload. That is intentional. The benchmark tests whether a reviewer notices an altered stored dispatch declaration; it does not need executable code to establish that the declaration changed.

Evidence without a new disclosure channel

The raw WCAB validator proves the exact local relationship shape and assignment transition, but its public truth contains only structural counts and safe package-member boundaries. It deliberately excludes the control name, shape identifier, macro names, relationship identifier, and raw XML.

The optional FormulaFence adapter accepts the fact only when FormulaFence emits its exact critical worksheet_embedded_controls_changed record and FF029 finding with a redacted one-control profile. A generic worksheet difference is not enough; a report that exposes the control or macro identity is not required. That keeps the benchmark useful for exact integration testing without normalizing disclosure of workbooks' operational identifiers.

What the result does not say

This is a stored assignment change, not proof that a macro exists, was resolved, was enabled, ran, or produced a result. Neither WCAB nor FormulaFence loads a control, inspects or executes VBA, invokes an Office client, authenticates a user, evaluates permissions, or claims an event-dispatch outcome. The useful claim is narrower and more defensible: a review-relevant workbook declaration moved while its ordinary spreadsheet context did not.

Use the release

git clone https://github.com/SybilGambleyyu/workbook-change-benchmark.git
cd workbook-change-benchmark
git checkout v0.44.1
python -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'
wcab validate --fixtures fixtures

formulafence diff approved.xlsx candidate.xlsx

WCAB 0.44.1 contains 61 validated cases and 63 observable facts. It corrects three stale score-test totals in 0.44.0; the generated fixtures and adapter contract are unchanged. Its 294-test local suite, package checks, fresh wheel/source installs, and strict FormulaFence 0.225.0 adapter run passed; FormulaFence maps all 62 supported facts and all three coverage expectations, with one intentionally structural formula rewrite remaining unmapped. The synchronized benchmark dataset is available on Hugging Face.

Both projects are MIT-licensed. Read the WCAB 0.44.1 release, the FormulaFence release, or the validation record for source, artifact hashes, and reproducible checks.