A falha esta nesta função.
Private Function fu_ValidaTraco() As Boolean
Dim iQtde As Integer
For i = Len(txtPaginasParaImpressao.Text) To 0 Step -1
If Mid(txtPaginasParaImpressao.Text, IIf(txtPaginasParaImpressao.SelStart > iQtde, txtPaginasParaImpressao.SelStart - iQtde, txtPaginasParaImpressao.SelStart), 1) = "-" Then fu_ValidaTraco = True: Exit Function
'If Mid(txtPaginasParaImpressao.Text, IIf(txtPaginasParaImpressao.SelStart > iQtde, txtPaginasParaImpressao.SelStart - iQtde, txtPaginasParaImpressao.SelStart), 1) = ";" Then Exit Function
iQtde = iQtde + 1
Next
iQtde = 0
For i = txtPaginasParaImpressao.SelStart To Len(txtPaginasParaImpressao.Text)
If Mid(txtPaginasParaImpressao, txtPaginasParaImpressao.SelStart + iQtde, 1) = "-" Then fu_ValidaTraco = True: Exit Function
If Mid(txtPaginasParaImpressao, txtPaginasParaImpressao.SelStart + iQtde, 1) = ";" Then Exit Function
iQtde = iQtde + 1
Next
End Function
Quando tiver um tempo, tento corrigir. Enquanto isto se você quiser ir brincando com ela.
Para ser mais exato, deve estar nesta linha:
If Mid(txtPaginasParaImpressao.Text, IIf(txtPaginasParaImpressao.SelStart > iQtde, txtPaginasParaImpressao.SelStart - iQtde, txtPaginasParaImpressao.SelStart), 1) = "-" Then fu_ValidaTraco = True: Exit Function