This was a tough topic to understand. I had misunderstandings myself. And there's a chance I'm wrong in something below. I'm just understanding some of this for the first time now.
What you are asking for there is not possible. Not at all. There is NO WAY for the KM Editor to determine "if a variable is used in a macro." Not even the Engine can determine that. (I suspect Godel's Theorem makes it impossible, but we should save that discussion for another thread.) Variables can be used in macros in a variety of different ways, not simply by name in a visible/obvious token like %Variable%X%. The list that you are asking for would be inaccurate. Do you want to rely on inaccurate lists? It is actually impossible for the KM Editor (or Engine) to know the names of the variables that a macro can create. You specifically wanted to know if a global variable was "being used in a macro", rather than "does the global variable exist." Those are different things, and the first one is impossible to know.
Peter alluded to this when he wrote:
For both of the lists of variables that have been mentioned above, (the one in the Debugger and the one in the KM Preferences Pane) neither of them correspond to what's happening inside KM. Both lists are inaccurate and by the nature of the great power of KM's >>flexible<< design, must always be inaccurate. The Debugger only lists the ones that have been dynamically changed, and the Preferences one only lists the ones that the KM Editor knows about using the incomplete list of techniques Peter mentioned above. But I think I know what you are thinking... you are asking "Why isn't the KM Editor Preferences list of global variables made identical to the dynamic KM Engine as it runs?" That's a fair question. I don't think Peter answered that. I suspect the answer is that it would slow down the Editor a lot because the Editor would either have to read a huge amount of data from the storage files on a continual basis, or Peter would have to create some sort of protocol for the Engine to update the Editor every single time a variable changes. >>>>And even that wouldn't give you a list of all variables that the Macro changes, only the ones that are currently in use!!!!!!!!<<<< This might be possible, but it's a new layer of complexity and burden on the CPU that Peter can't probably see merits very many people. Are you sure this is important to you?
Externally, for our purposes, a variable can either exist or not exist, and those that exist can be empty or not empty. I think it would be possible for KM to remove our access to the "exists" test. All we need is the "is empty" test. I can't think of a single reason I need "exists", when "is empty" will suffice for everything I do.
I won't blame you if you are angry or frustrated by my answer. And I stand ready to be corrected.