VB怎么显示给文本框自动排版

VB如何显示给文本框自动排版
作用就是把一篇排版很乱的文章按格式重排版

有一个 text1 和一个 command1
text1中的内容是【每段可能相连,也可能每段之间有一个或多个空行】

张三
李四
王五



张三

   李四
王五

点击command1后,text1变为

  张三   【全角空格全角空格张三】
                    【空行】
  李四

  王五

即每段前面加两个全角空格,每段之间加一个空行。我使用了一种代码,但始终有两个问题:
1.每次文章最后总会加一个空行并且加了两个全角空格
2.假如某行中有全角空格组成,那么这全角空格也会被当成一行【就比如上面我点了command1后再接着点,空行就会越来越多】

其实效果就如这个自动排版的网页http://www.pc354.com/soft/paiban.html 中的效果,但网页使用有限制,想改为程序随时可用的。但这个网页中的排版也存在同样的问题:1.每个空行也会加两个全角空格,2.假如最后一行有空行的话,不会删除,也会加上全角空行出来。

谢谢!平常工作需要,常需要排版,通过网页折腾有点麻烦。
------解决方案--------------------
先把你有问题的代码贴出来。
------解决方案--------------------
Private Sub Command1_Click()
    On Error Resume Next
    Dim a()         As String
    Dim bHasContext As Boolean  '前面是否已经出现了非空行,决定插入空格'
    Dim strPrefix   As String   '行前空格'
    Dim i           As Long

    bHasContext = False
    strPrefix = IIf(Check1.Value, "  ", "  ")

    a = Split(Text1.Text, vbCrLf)
    For i = 0 To UBound(a)
        a(i) = LTrim$(a(i))     '先去空格'
    Next

    For i = 0 To UBound(a)
        If LenB(a(i)) <> 0 Then '去了空格就可以直接判断空行了'
            a(i) = IIf(bHasContext, vbCrLf & vbCrLf, "") & strPrefix & a(i)
            bHasContext = True
        End If
    Next

    Text1.Text = Join(a, "")    'Delimiter 无内容,无论拼多少个空行还是没内容'
End Sub

------解决方案--------------------
你重新建工程,窗体上只有 Text1、Check1、Command1,
代码只有我3楼的代码,再试试。