In Shapes.Range(Index), Index can be a number or a string.
If the Index of the Range is a String, it must be the name of a ShapeRange Object which is a Shapes Collection My bad, I missed this before.
With the Shapes Collection. one uses the Item Method, (Default of the Shapes collection,) thusly Shapes(index) where Index is the Name of the Shape to return a particular Shape.
I now think that you wanted
'Assumes that each Shape's name is stored in a cell in Target.
For Each strRng in Target
ActiveSheet.Shapes(strRng).Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2.
The ff prefix I used above on the shape name is merely to differentiate the Shape name from the Cell Value. You don't really need it. Since all your shapes are about countries, you could as easily use "nt" or "na" for Nation,. or "co" for country, or add an underscore for readability, ("shp_Greece").
In truth, since the only two places in your project where a country name will be located is as a Cell.value and as a Shape.Name, I would not use a prefix.
There will be times when you need to have several Variables with the same name. For example, the name of an input control on a UserForm, ("ioFirstName",) the Name of a Column (range), ("empFirstName",) on a Worksheet, ("Employees",) and the name of a Variable, ("FirstName",) to temporarily hold the person's first name. I can use that same UserForm with Worksheets("Clients") and columns("cliFirstName".)