A suggestion.
For this line of code
set objHeader = objColumnChild.Header
You might want to do something more like
set objHeader = objColumnChild.WaitChild('Header', 0)
Especially if there is a possibility that the object does not exist. Assigning a null object reference means that you can't call the "Exists" property... that property won't exist if there is no object. What WaitChild does is return an "empty" object if the object does not exist and that object will have the "Exists" property with a value of "False".
An alternative is to use "FindChild" but the syntax on that is a bit more "clunky" for what you're doing as you need to pass in several parameters of property names, property values, depth, etc. The end result is the same in that, if the object is not found, it returns an empty stub with the Exists property set to False.