Codeek described the problems in your CREATE TABLE statement. Still it can be easy to misplace the required [] brackets when dealing with a field name which contains spaces and punctuation characters. (Actually, Access development is easier if you can avoid spaces and punctuation in object names.)
I add a line break after each field definition to make it easier for me to spot problems. Here is the statement produced by the following code sample. I tested it in Access 2010 and it executed without error.
CREATE TABLE ThisTable (
StateMedicaid TEXT,
Commercial TEXT,
HIX TEXT,
MMP TEXT,
[CMS Part D (CY 2015)] TEXT,
[CMS Part D (CY 2016)] TEXT
);
Dim strCreate As String
Dim intYear As String
intYear = 2015
strCreate = "CREATE TABLE ThisTable (" & vbCrLf & _
"StateMedicaid TEXT," & vbCrLf & _
"Commercial TEXT," & vbCrLf & _
"HIX TEXT," & vbCrLf & _
"MMP TEXT," & vbCrLf & _
"[CMS Part D (CY " & intYear & ")] TEXT," & vbCrLf & _
"[CMS Part D (CY " & (intYear + 1) & ")] TEXT" & vbCrLf & _
");"
Debug.Print strCreate
Note I changed the variable name from year to intYear because there is a function named Year().
"first part " & variableName & " second part"