2

私は:

  • ExcelClean関数を使用して、すべてのテキストからすべての書式設定を取り除きます。
  • 次に、結果の長い文字列を 80 文字以下の別々の行に分割したいと考えています。
  • クリーン後に残る唯一の区切り文字は空白です。

以下のコードはチャンピオンのようにこれを行いますが、残忍です。

コード

Sub TrimTo75()

myRow = 4
Range("C" & myRow).Select
myString = ActiveCell.Value

While myString <> ""
While Len(myString) > 75

mySubString = Left(myString, 75)
ActiveCell.Value = mySubString

myString = Right(myString, Len(myString) - 75)

myRow = myRow + 1
Range("C" & myRow).Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown

If Len(myString) < 75 Then    
ActiveCell.Value = myString    
End If

Wend

myRow = myRow + 1
Range("C" & myRow).Select
myString = ActiveCell.Value

Wend        
End Sub
4

3 に答える 3

1

これを試して ..

Sub TrimTo75()

myRow = 4
Range("C" & myRow).Select
myString = ActiveCell.Value
Dim x As Integer

While myString <> ""

  While Len(myString) >= 75
    x = 75
    While Not Mid(myString, x, 1) = " "
      x = x - 1
    Wend

    MsgBox x

    'mySubString = Left(myString, 75)
    mySubString = Left(myString, x)
    ActiveCell.Value = mySubString

    'myString = Right(myString, Len(myString) - 75)
    myString = Mid(myString, x + 1)

    myRow = myRow + 1
    Range("C" & myRow).Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlDown

    If Len(myString) < 75 Then

      ActiveCell.Value = myString

    End If

  Wend

  myRow = myRow + 1
  Range("C" & myRow).Select
  myString = ActiveCell.Value

Wend

End Sub
于 2013-06-23T07:26:47.947 に答える
0
If Len(rngCellsB_Title) > 90 Then                                    
    x = 90

    While Not Mid(rngCellsB_Title, x, 1) = " "
       x = x - 1
    Wend

    strFirstPart = Left(rngCellsB_Title, x)
    strSecondPart = Right(rngCellsB_Title, (Len(rngCellsB_Title) - x))
    blnSplit = True
End If

If blnSplit Then

   strMessageTemp = strFirstPart & strSecondPart & Chr(13)

   blnSplit = False

Else
   strMessageTemp = rngCellsB_Title & Chr(13)
End If

これを試してみてください。スペースを区切り文字として使用して、既知のポイントの前で文字列を分割するだけです。文字列全体またはその 2 つの部分を処理する前に、単純なブール値を使用してテストしました。

于 2013-10-23T09:49:46.637 に答える