• ベストアンサー

「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

  • エクセル:1セル中の複数行の文字列を分割するには?

    Altキー+エンターでセル内に複数行の文字列を入れました。 これを分割したいのですが、どのようにすれば良いでしょうか? たとえば、 「 日本   東京都   港区  」 というセルの上から2行目まで取り出して 「 日本   東京都 」 という感じにしたいのです。このようなことは可能なのでしょうか?どなたか教えて頂けませんでしょうか?お願いします。

  • Excelで1つのセルに入れた複数行の長い文字列をセルの高さを変えずに表示したい

    こんにちは。 Excelについての質問です。 お分かりになる方がらっしゃいましたら教えていただけると幸いです。 Excelのシートに、何行かにわたる長い文字列をコピーしたものを 1つのセルに貼り付けて、全て表示させたいのです。 その時、シートの幅や高さは変えずに、 セル内で「Alt+Enter」で改行されてその高さに収まらない文字列は、 そのまま直下の空いているセルに表示させたいのですが、これは可能でしょうか。 「折り返して全体を表示する」はオフの状態です。 この設定で1行だけの文字列だと幅以上の文字列は自然に横の空白のセルに流れてくれますよね? これを、「Alt+Enter」の複数行ver.でやりたいのですが、 このようなことは可能なのでしょうか。 質問が分かりにくくて申し訳ありません。 他にも、いい方法をご存知でしたらアドバイスをお願いいたします。

  • 一つのセルに複数行を入力すると最後の1行を印刷しないことがある

    Excel97ですが、Alt+Enterで改行しながら、一つのセルに複数行を入力します。そのセルの列の行幅は書式で自動にしてあるので、文字の行を増やしていっても、ちゃんとセルの中に収まっています。ところが、印刷プレビューや印刷すると、所々のセルは、約1行分が見えません。Alt+Enterで1行分余計に空白を設けてやると、空白のない、ぴったりの行だけ印刷できます。 プレビューでも起こるのでプリンタのせいではありません。どこのセルがどうやるとそういう現象になるのか分からないので、全部のセルにAlt+Enterで1行分余計に空白を入れるのも面倒です。なぜ、こんな現象が起こるのか、また対応はあるのでしょうか?

  • Excel Alt+Enter の解除方法

    Alt+Enterでセル内で改行されている列を書式設定の文字の制御で折返しや縮小をした場合、見た目そのように表示されますが、セルそのもののAlt+Enterが残ってしまっています。 何かしらの機能や関数を使って解除する方法はありませんか?

  • セル内で改行(Alt+Enter)以降の文字列を削除(Excel VBA)

    セル内にAlt+Enterで改行している文字列があるのですが、1つめの改行以降の文字列を削除したいのですが、方法が分かりません。 どなたかお教えいただけないでしょうか? Excel2002を使用しております。 あいうえお かきくけこ   ↓ あいうえお よろしくお願いします。

  • エクセルのセル内で改行した場合の行数および行ごとの文字数?

    エクセル2000です。 セルをいくつか結合させ、その中にAlt+Enterで改行した文字列があります。 全部で何行あり、各行は何文字かを調べる関数またはVBAはありますか?

  • 複数行を特定の列の各セルの中にある特定の文字列でソートする

    複数行を特定の列の各セルの中にある特定の文字列でソートしてその特定の文字のみが含まれる行のみ取り出す方法って簡単にできますか? たとえばA1からF100までのセルでC列のセルに特定の文字列が含まれる場合その行を集めて残りはそのしたの行に置き換えるとか。 特定の文字列はセルの文字列の中のどの部分にあるかは任意とします。よろしくおねがいします。 イージス

  • エクセルで,複数行のままコピーしたい

    エクセルで,ある1つのセル(例えばA1)に,複数行になっている文字列があります(Alt+Enterにより,セル内で改行したものです). 別のセル(例えばB2)に「=A1」と入力すると,B2にはA1にある文字列が表示されるのですが,改行が消えてしまい,1行で表示されてしまいます. 改行を消さずにコピーする方法はないでしょうか.教えてください.エクセルのバージョンは2010です. よろしくお願いします.

  • 2行にわたるセル内の文字列判定について

    Altキーによって1つのセル内に2行にわたる文字列が入力 してある場合、その内容と等しいかどうかを判定する方法を 教えて下さい。

  • Altキー+Enterで同一セル内で改行しました。。

    Altキー+Enterで同一セル内で改行しました。 1行目と2行目の行間を縮めるにはどうしたら良いですか? それとも最初から行を挿入させて幅を縮めるしかないのでしょうか? お願いします。