Ok, I think I see a way to accomplish what I'm after without using the temp variables. I think the original logic here:
(Cell.Column = GemX2 AND Cell.Row = GemY2) OR System.Pick.GemFamily.instance(0)
can be rewritten to something like this:
(Cell.Column & ", " & Cell.Row = GemX2 & ", " & GemY2) OR System.Pick.GemFamily.instance(0)
This is still not a great solution as it's not as readable/maintainable as it could be. But it's better.