我的代码很混乱的‘text1为正常文本框
'text2为过渡用的文本框
   On Error Resume Next
   Dim a() As String
   Dim i, j, n
   Dim k As Boolean, o() As Boolean
   a = Split(Text1.Text, vbCrLf)
   k = True
   Text2.Text = ""
   ReDim o(UBound(a))
   
   For n = 0 To UBound(a)
      o(n) = True
   Next nFor i = 0 To UBound(a)
   k = True
      If a(i) = "" Then k = False
      For j = 1 To Len(a(i))
         b = b & " "
      Next j
   If a(i) = b Then k = False
   b = ""
   If k = False Then o(i) = False
   
   If i = UBound(a) Then
            If o(i) = True Then Text2.Text = Text2.Text & a(i)
   Else
            If o(i) = True Then Text2.Text = Text2.Text & a(i) & vbCrLf & vbCrLf
   End If
   Next i
   '仅去掉每一行前面的空格
     Dim ary() As String
    Dim i2 As Long
    ary = Split(Me.Text2.Text, vbCrLf)
    Text2 = ""
    For i2 = LBound(ary) To UBound(ary)
       Text2 = Text2 & LTrim(ary(i2)) & vbCrLf
    Next
    
    '每行加两个汉字全角空格
        Dim s As String
    s = Text2.Text
    If Check1.Value = 1 Then
    s = Replace("  " & s, vbLf, vbLf & "  ")    '字符串中,是两个空格
    Else
    s = Replace("  " & s, vbLf, vbLf & "  ")    '字符串中,是两个空格
    End If
    Text1.Text = s

解决方案 »

  1.   

    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
      

  2.   


    谢谢您的回复,不过这代码最后的排版每段开头没有加两个全角空格,中文排版时,我想在每个文字段前面两个全角空格,而纯粹用来分割两个段之间添加的空行不要加空格。aabb
    应该是变成
      aa               【全角空格全角空格aa】
                                 【空行】
      bb              【全角空格全角空格bb】
      

  3.   


    比如有一个文章:用你的代码排出来后是这样
    \\\\\\\\\\\\
    马上就要开学了,我家却招了贼。偷走了笔记本一台,钱包里钱拿走,卡都留下了,还偷了书包。估计小偷装笔记本电脑,问题是你偷书包就偷书包,还把暑假作业留下。
    \\\\\\\\\\\\
    但正常来说,中文每段前面应该要加两个空格的【全角空格】,所以排版应该是下面这样:
    \\\\\\\\\\\\
      马上就要开学了,我家却招了贼。偷走了笔记本一台,钱包里钱拿走,卡都留下了,还偷了书包。  估计小偷装笔记本电脑,问题是你偷书包就偷书包,还把暑假作业留下。
    \\\\\\\\\\\\
    实际上就是http://www.pc354.com/soft/paiban.html 这个网址排出来的效果,不过这个网址中排的效果存在一个问题,就是每个用来分割的空行上,也加了两个 全角空格,其实是没必要的。
    \\\\\\\\\\\\
      马上就要开学了,我家却招了贼。偷走了笔记本一台,钱包里钱拿走,卡都留下了,还偷了书包。
      
      估计小偷装笔记本电脑,问题是你偷书包就偷书包,还把暑假作业留下。

    \\\\\\\\\\\\
      

  4.   

    输入马上就要开学了,我家却招了贼。偷走了笔记本一台,钱包里钱拿走,卡都留下了,还偷了书包。估计小偷装笔记本电脑,问题是你偷书包就偷书包,还把暑假作业留下。
    Check1 选中时,输出
      马上就要开学了,我家却招了贼。偷走了笔记本一台,钱包里钱拿走,卡都留下了,还偷了书包。  估计小偷装笔记本电脑,问题是你偷书包就偷书包,还把暑假作业留下。
    有什么问题?
      

  5.   

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

  6.   


    哦,不好意思,没注意到里面还用到了个check,加了,完全就是我要的效果,真的是非常感谢您的热情回复!
      

  7.   

    Check1 是你原先代码里就有的!
      

  8.   


    嘿嘿,那个check是我在发这贴时临时加的,搞个代码进去了,把这个给忘了,没想到您这么细心,把这个功能也加上了!