The next refactoring to look at is “Extract Method” located here in the VBA IDE RubberDuck menu:

I’m going to look at this code and attempt to use this on OldMatches to extract the line to a new function to make it easier to read. Here is the code I am going to refactor, and I’m going to first just try a one line refactor:
I highlight the line:
OldMatches = (Nz(dctResults(FieldName).OldValue, “ValueIsNull”) = Nz(dctInputs(FieldName)(0), “ValueIsNull”))
And then select the extract method menu item shown at the beginning of the post. Here is the resulting dialog I get:

So, I’m going to change the name to GetOldMatches and then choose the variable OldMatches as the return value of the new function. Then the dialog looks like this:

I’m not sure I want the extra NewMatches As Boolean line in the new function because I’m not using it. I suppose it’s picking that up because I’m declaring those variables on the same line.
Here is the way it refactors based on my selected options:
I had already refactored these methods down pretty far, so I’m not seeing too much benefit, although I like the function. Let’s try something else. I’m going to look at my library and try to find a good library function to use Extract Method.
How about this function? Let’s see if we can find a method to extract here:
I see a case statement in there. Let’s see what happens if I extract the code in the case of “Case sep”.
Here are the options I’m selecting in the dialog:

And here is the resulting code:
I’m not sure this really did much for the code readability in this case, but I see potential here. In this case, the subroutine is simply passed the working variables of the parent function as parameters by reference, so the subroutine acts on the actual parent variables. It works as I anticipate without modification. This simplifies the parent function, although the name I chose for the extracted subroutine isn’t really very descriptive. I should have chosen something better like:
BeginNextElement
Then for the case QUOTED I could extract that as a method and call it:
ProcessQuoteCharacterElement
And for Case Else I could extract that as a method and call it:
ProcessOtherElementCharacter
This would make the top level function quite easy to understand and allow the user to descend into the lower levels of the routine if they wanted to examine it.