• ベストアンサー

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

an_inackの回答

  • an_inack
  • ベストアンサー率47% (9/19)
回答No.4

#1さんの書かれたコードが何をしているか 簡単にですが見てみましょう。 sText = Split(sText, vbLf, , vbBinaryCompare) ここではsTextという変数に、 指定されたセルの値を、 改行を区切り文字として配列に取得しています。 たとえばセル内に2行あったとすると、 sText(0) sText(1) にまで値が入ります。 ちなみに、sText(2)には値がありませんから、 当然使おうとするとエラーになります。 >If IsError(Len(sText(2))) Then > MsgBox "行がないです。" >Else > MsgBox "行 3:" & Len(sText(2)) & "文字" >End If でエラーになるのは1行目で存在しない sText(2)を指定しているためです。 このエラーを回避したければ、 存在する配列分処理をするよう書けばいいと思います。 Dim sText As Variant Dim i As Integer sText = Range("通信欄").Text sText = Split(sText, vbLf, , vbBinaryCompare) For i = 0 To UBound(sText) MsgBox "行" & i + 1 & ":" & Len(sText(i)) & "文字" Next 詳しくはヘルプ、またはVBAのレクチャーサイトなどで、 「配列」をキーワードに調べてみると、 知識が深まると思いますよ~!

merlionXX
質問者

お礼

For i = 0 To UBound(sText) MsgBox "行" & i + 1 & ":" & Len(sText(i)) & "文字" Next なるほど、これはいいですね!・・・・・と思ったのですが、実際はメッセージボックスではなく変数に代入しているので使えないですよね? でも「存在する配列分処理をするよう書けばいい」とのアドバイスで、 If UBound(sText) > 1 Then 行2 = Len(sText(1)) If UBound(sText) > 2 Then 行3 = Len(sText(2)) If UBound(sText) > 3 Then 行4 = Len(sText(3)) If UBound(sText) > 4 Then 行5 = Len(sText(4)) としてみましたら、無事回避できました。 ありがとうございました。

関連するQ&A

  • Excelでセル内改行

    お世話になります。 早速ですがExcelで複数のセルに文字列が入力されている時、それらの文字を結合する場合はCONCATENATE関数を使いますよね? で、この応用(なのか判りませんが)で例えばセルA1に"改"の文字が、セルB1には"行"の文字が入っているとき、セルC1に 改 行 と改行させて2行で表示したいのですが、セルC1に"=CONCATENATE(A1,CHAR(13),B1)"とやってもうまくいきませんでした。 Alt+Enterで手入力する以外に関数、マクロ等で何かいい方法がありますか? よろしくお願いします。

  • エクセル2003の改行について

    エクセル2003を使用しています。 結合したセル内で文字を入力し、任意の場所で改行を行うには、通常「Alt」+「Enter」を使いますが、VBA等を使用し、「Alt」を押さずに「Enter」のみで、任意の場所で改行させることは可能でしょうか? できれば適応させるセルの番地も指定できればうれしいのですが・・・ よろしくお願い申し上げます。

  • Excelセル内の改行を含む文字列の1行目抽出

    Excelセル内の改行を含む文字列があり、関数を使って、その1行目だけ抽出したい。 たとえば、下記のような式を書きました。「改行コード」おかしみたいで動作しません。 Left("A1", Find(vbCrLf, "A1")) (改行コードをさがして、そこまでの文字列を切り取る) これをVBAで書く方法があれば、コードを教えてください!

  • エクセル セル 文字数設定

    エクセル2007を使用しています。1セルの中に設定した1行分の文字数を越えると自動的にAlt enter キーを押して改行することは可能でしょうか。1行20文字に設定していて,それをこしたら自動的に改行されるようにしたいのです。教えてください。

  • エクセルでセル内改行の1行目だけ抜き出す関数は?

    エクセルでセル内で改行している文字列データがあります。 このセルの1行目だけを抜き出す関数はありますか?

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

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

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

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

  • Excel 2016 で一つのセル内で改行したい

    Excel で一つのセル内で改行する方法をお願いいたします 列と行を広くして一つのセル内に複数行記入したいのです 書式設定では 折り返して全体を表示する         縮小して全体を表示する        セルを結合するが有りますが        セル内での改行が有りません 前の文字をスペースで送ると改行らしき事は出来るのですが文字の並びがズレて来るのでよろしくお願いいたします

  • エクセル セル内の改行

    エクセル2003を使用しています。 セル内で文字を入力し、任意の場所で改行を行うには、通常「Alt」+「Enter」を使うと思いますが、どうしても次の行(下のセル)に移動してしまいます。 オプション等で設定できるのでしょうか?

  • Excel 特定のセルだけEnterでセル内改行

    タイトル通りのことなのですが、VBA等を駆使してできないか悩んでいます Excelのセル内改行は通常Alt+Enterなのですが、 使っているシートの一つのセルだけ複数行入れるような大きな所があります。 他のセルでは問題ないのですがここの入力時では、 いつもAltを押しながらでないと改行できない煩わしさが募りまして、 「このセル内に限り」Enterキーだけで改行できるようにしたいのです。 条件としてはあくまでこのセルのみで、形を崩さずにできることが望ましいです。 この入力セルは他シートから参照されているため 複数行のセルに分割したり、テキストボックスに置き換えることは難しいです 色々探した挙句、Application.MoveAfterReturn など VBAを駆使して考えてみたのですが 手詰まりになってしまいました。 何かできる方法はありますでしょうか?