• ベストアンサー

「Alt+Enter」で折り返した文字列。1行目は何文字? 2行目は何文字?

セルの中に、「ALt+Enter」で複数行に折り返している文字列があって、 1行目は何文字で、折り返した2行目は何文字、3行目は何文字… とカウントさせたいのですが…??? 無理??? できましたら、具体的に記述して教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

こんな書き方もあるということで・・・ 対象セルを1つ選択して下記マクロを実行します。 Sub MojisuCount() Dim moji As String '選択セルの内容 Dim rw As Integer '行カウンタ Dim pot As Integer 'Instrで調べた改行コードの位置 moji = Selection & vbLf '選択セルの文字の最後に改行を付加(判定を不要にする) pot = InStr(moji, vbLf) '改行コードの位置は? While pot > 0 'なくなるまで続ける rw = rw + 1 '行を進める MsgBox rw & "行目は " & pot - 1 & " 文字です" moji = Mid(moji, pot + 1) '改行文字の次からを新たな検索対象にする pot = InStr(moji, vbLf) '改行コードの位置は? Wend End Sub

iillyy
質問者

お礼

すばらしくうまく動いてくれました。 感激です。 あなた様の作ってくださるマクロは、ものすごく見やすいです!!! コメントも書いていただいて、本当に感謝感激です。 これからもお世話してください。 ありがとうございました。

その他の回答 (2)

  • arata
  • ベストアンサー率49% (139/279)
回答No.3

Splitを使うと簡単になります。 Splitは、指定した文字で、文字列を区分けして、配列に入れてくれます。 こんな感じです。 Dim vTerm As Variant Dim sOrg As String sOrg = ThisWorkbook.Worksheets(1).Cells(1, 1).Value vTerm = Split(sOrg, vbLf) If UBound(vTerm) >= 0 Then MsgBox (UBound(vTerm) + 1) & "行データがあります。" Else MsgBox "データは入っていません。" End If For i = 0 To UBound(vTerm) MsgBox (i + 1) & "行目の文字数は、" & Len(vTerm(i)) & "です。" Next

  • wonwonwon
  • ベストアンサー率22% (15/66)
回答No.1

ずばり以下のとおりです。短時間で制作の為、変数などへんてこで分かり難いかもしれませんが。 適当に解析してねー Dim i, j, kk, sub_K, Ssub_K, k(100) As Integer Dim moji As String moji = Range("b4").Value j = Len(moji) kk = 1 For i = 0 To j sub_K = InStr(i + 1, moji, Chr(10)) If sub_K = 0 Then i = j: k(kk) = j - Ssub_K: Exit For Else i = sub_K k(kk) = (sub_K - Ssub_K) - 1 Ssub_K = sub_K kk = kk + 1 Next i For i = 1 To kk MsgBox k(i) Next i

関連するQ&A