• ベストアンサー

セルが何行なのかをVBAで取得したい

セルが何行なのかをVBAで取得したいのですが どういうコードにすればいいですか? 例えば、A1セルに a b c と入ってる場合、3行ですが それをVBAで取得するにはどうすればいいですか? Sub test() Dim r As Range Set r = Cells(1, 1) If r.Value Like "*" & Chr(10) & "*" Then MsgBox "改行があります" End If End Sub というコードで改行が有ることは取得できたのですが 何行かまでは取得する方法がわかりません。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

ワークシート関数でも同じ方法で計算できますが、 sub macro1()  dim buf as variant  buf = range("A1").value  msgbox len(buf) - len(replace(buf, vblf, "")) + 1 & "行です" end sub のような考え方でもできます。

その他の回答 (2)

  • kamikami30
  • ベストアンサー率24% (812/3335)
回答No.2

まず、正しくは セル内に何行の文字列が入っているか? です。 行数と聞いて私がまず思い付いたのは、改行コードの数を数えること。 ここまでは質問者さんと同じです。 ここでさらに、私は以下のパターンがあることを考えました。 改行を便宜上↓と書きます。 どのパターンも見た目には3行です。 パターン1 a↓ b↓ c パターン2 a↓ b↓ c↓ パターン3 a↓ b↓ c↓ ↓ パターン4 ↓ a↓ b↓ c パターン5 ↓ a↓ b↓ c↓ ↓ スペースのみの行がある場合の判断基準なども考慮すべきですがらとりあえず、この辺でよしとします。 上記のパターンでは、見事に改行の個数が違うわけです。 この全てのパターンを共通の書式とするには、文字列の前後にある改行を取り除くと良いと考えました。 そうすると、各行の間に改行があることになるので、改行の個数は常に行数マイナス1ですね。 あとは説明するまでもないと思います。

igjxtfbidh
質問者

お礼

ありがとうございます。

  • t-aka
  • ベストアンサー率36% (114/314)
回答No.1

例えばこんな感じではどうでしょうか・・・。 Dim r As Range Set r = Cells(1, 1) Dim splitCell() As String splitCell() = Split(r, Chr(&HA)) MsgBox "行数は " & UBound(splitCell) + 1 & "です"

igjxtfbidh
質問者

お礼

ありがとうございます。