VBA Tips
What Stack Overflow Measures About Access
A tag search that returns almost nothing is usually measuring the wrong thing.
Search Stack Overflow for [vba] and [access] and the result is zero. The tag is ms-access, and bracket syntax in the search box does not resolve tag synonyms the way the tag field on a question does. Search again with the correct tag, then switch the sort from Relevance to Newest, because the default buries recent posts under a decade of high-vote answers, and the questions are there. Note also that ms-access-2010, ms-access-2013, and ms-access-2016 are separate tags, so a single filter undercounts.
What turns up is still discouraging on first look. The ms-access tag carried 6,260 questions in 2016 and 162 in 2025. That is ninety-seven percent gone, and the figure gets quoted as proof that Access development has ended.
Raw counts measure the platform
Stack Overflow itself posted 2.18 million questions in 2016 and roughly 109,000 in 2025, a decline of about ninety-five percent. Nearly every tag on the site shows the same collapse, because the traffic that used to arrive as questions now goes to language models instead. Raw counts for any tag across that period describe what happened to Stack Overflow. They say almost nothing about the technology in the tag.
The measurement that survives the collapse is share. Express each tag as questions per ten thousand site-wide and the denominator problem disappears.
Share tells a narrower story
Normalized that way, ms-access held between 23 and 29 per ten thousand for the entire decade from 2010 through 2019. It fell to 17.8 in 2020 and 14.9 in 2021, and it has sat between 14.6 and 16.2 every year since. The decline is real, it is roughly forty percent, and it happened inside a two-year window six years ago rather than gradually across the life of the platform.
| Year | ms-access | access + vba | excel + vba | c# |
|---|---|---|---|---|
| 2016 | 28.66 | 11.46 | 81.85 | 676.84 |
| 2019 | 24.33 | 11.20 | 98.26 | 563.55 |
| 2021 | 14.94 | 5.65 | 66.24 | 432.62 |
| 2023 | 15.09 | 6.53 | 77.44 | 495.22 |
| 2025 | 14.83 | 7.33 | 89.55 | 531.19 |
Source: Stack Exchange Data Explorer, July 2026 snapshot.
The comparison tags do the work
A forty percent drop means nothing without knowing what everything else did. C# went from 564 per ten thousand in 2019 down to 433 in 2021 and back to 531 in 2025. Excel VBA went from 98 down to 66 and back to 90. Both took the same dip and recovered most of it. Access took the dip and stayed down.
Part of the 2020 drop is arithmetic rather than abandonment. Site-wide volume actually rose that year, from 1.76 million questions to 1.86 million, which deflates the share of every established tag at once regardless of what happened to it. That component reversed for the comparison tags. For Access it did not.
A mechanism that fits the timing
An Access application assumes a front end on a workstation and a back end on a file share reachable across a LAN. Route that connection through a VPN and the file-locking traffic that Jet and ACE generate makes the application unusable. March 2020 put every one of those deployments into the same wall on the same day. Some acquired a SQL Server back end, some moved behind Terminal Server or Citrix, some were replaced outright, and some quietly stopped being used.
That is a single permanent shock rather than a gradual decline, which is the shape the numbers actually show. Correlation is doing real work here, but the mechanism is specific enough to carry weight: no other tag in the comparison set has an architecture that remote work breaks by design.
The split inside the tag
One division in the data matters more than the headline number. The ms-access tag overall went from 14.94 per ten thousand in 2021 to 14.83 in 2025, which is flat. The intersection of ms-access and vba went from 5.65 to 7.33 across the same span, a recovery of roughly thirty percent, which is close to what C# and Excel VBA managed.
The segment that recovered is the segment writing code. The segment that stayed flat is everything else: query design, form and report questions, and general how-do-I traffic. That is the casual-builder layer, and casual builders are precisely the population Power Apps and SharePoint lists were built to capture. Treat the thirty percent as directional rather than precise, since the 2025 intersection contains only eighty questions.
What none of it measures
Question volume counts people attempting to build or repair something without help. It does not count installed applications, and it does not count money. A shrinking population of people who can work on Access, set against applications that continue to run payroll and inventory and rent rolls, describes a widening gap rather than a closing market. Those are different quantities, and the raw-count argument conflates them.
Reproducing it
The Stack Exchange Data Explorer at data.stackexchange.com queries a periodic snapshot of the public Stack Overflow database. Sign in, paste the query, and run it.
WITH Yearly AS (
SELECT YEAR(CreationDate) AS Yr, COUNT(*) AS TotalQ
FROM Posts
WHERE PostTypeId = 1 AND CreationDate >= '2010-01-01'
GROUP BY YEAR(CreationDate)
),
Tagged AS (
SELECT YEAR(CreationDate) AS Yr,
SUM(CASE WHEN Tags LIKE '%<ms-access>%' THEN 1 ELSE 0 END) AS AccessAll,
SUM(CASE WHEN Tags LIKE '%<ms-access>%'
AND Tags LIKE '%<vba>%' THEN 1 ELSE 0 END) AS AccessVBA,
SUM(CASE WHEN Tags LIKE '%<excel>%'
AND Tags LIKE '%<vba>%' THEN 1 ELSE 0 END) AS ExcelVBA,
SUM(CASE WHEN Tags LIKE '%<c#>%' THEN 1 ELSE 0 END) AS CSharpAll
FROM Posts
WHERE PostTypeId = 1 AND CreationDate >= '2010-01-01'
GROUP BY YEAR(CreationDate)
)
SELECT y.Yr AS [Year],
y.TotalQ AS [Total Questions],
CAST(10000.0 * t.AccessAll / y.TotalQ AS DECIMAL(10,2)) AS [Access per 10k],
CAST(10000.0 * t.AccessVBA / y.TotalQ AS DECIMAL(10,2)) AS [AccessVBA per 10k],
CAST(10000.0 * t.ExcelVBA / y.TotalQ AS DECIMAL(10,2)) AS [ExcelVBA per 10k],
CAST(10000.0 * t.CSharpAll / y.TotalQ AS DECIMAL(10,2)) AS [C# per 10k]
FROM Yearly y
JOIN Tagged t ON t.Yr = y.Yr
ORDER BY y.Yr;
Two cautions when reading the output. The current year is always partial, so it should not be compared against full years without prorating, and at small counts the ratios carry error bars wider than the effect being measured. And matching on the closing angle bracket keeps ms-access from silently absorbing ms-access-2010 and its siblings, which is the difference between measuring one tag and measuring a family.
The exercise generalizes past Access. Any claim of the form "nobody asks about X anymore" that rests on raw Stack Overflow counts is measuring a platform in decline and attributing the result to the technology. The correction is one division.
Rob Evans is an independent Microsoft Access and VBA specialist at Evansco Apps, with fifteen-plus years of professional engineering including C# and .NET. He stabilizes and extends the Access applications that quietly run businesses. rob.evans@evanscoapps.com