Yeah, I believe comboboxes do not support the .clear method. Don't you love it? I think you will need to do something like this:
pCtrls("cboSICCode").ListIndex = -1
That should do the trick. (FYI) And, I really didn't take a good look at your code, but I noticed some .Value in there. That should be logical, but it may not work right. If you change a controlBox's value, then access the value before you have closed/reopened the form, it will still report the original value even though your eyes can see that the value has been changed.
I found this out the hard way after about 2 days of trying to figure out why my code wasn't giving me the results I coded it to, so I finally tested this theory by having a comboBox with "E", and "W". If a button was pressed, it would flip "E" to "W" and vice verse. It would only flip once. It would also report in the console what the ".value" was. The reason it would only work once was that if I started with "E", it would flip to "W". Then, when pressed again, it would report in the console that the value was still "E", even though I could see that it was really changed in the form to "W", therefore a flipped "E" remains "W" and nothing would change. BUT, when I closed the form and reopened it, the value would be correct!
So, long story short, comboBox.value = x or comboBox.text = x probably should be something to avoid. Therefore, you have to use comboBox.ListIndex to change the selection. It seems you can always say x = comboBox.value or x = comboBox.text, but not the other way.
And yes, I have logged a bug.