重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になります

マージエリアの行数や列数等を取得する際、下記のようにすると思いますが
マージエリア内に非表示行があった場合行数を減らして取得することは出来ますか?

Sub Sample4()
Dim buf As String
With Range("A1").MergeArea
buf = buf & .Rows.Count & "行" & vbCrLf
buf = buf & .Columns.Count & "列" & vbCrLf
buf = buf & .Count & "個" & vbCrLf
buf = buf & .Item(1).Address(0, 0) & ":左上" & vbCrLf
buf = buf & .Item(.Count).Address(0, 0) & ":右下"
End With
MsgBox buf
End Sub

For文で範囲内の非表示行を調べれば良いのですが
上記のステートメントのほかに特別なものはないかなと思い聞いてみました
出来れば列数のステートメントが有ったら教えてください

変な質問で申し訳ございませんが、宜しくお願い申し上げます

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (1件)

こんにちは



各行の表示/非表示をカウントするので、結局は同じことですけれど、以下でも簡易的に求めることはできます。(列数も同様の方法で得られます)
 .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count

※ ただし、マージエリア全体が非表示の場合には、カウント対象オブジェクトが無くなるため、上記のままではエラーが発生しますのでご注意下さい。
※ エリアの1列目が非表示(=上記の場合)でも同様にエラーが発生します。
    • good
    • 0
この回答へのお礼

いつも早々、ありがとうございます

分かりました、試してみます
9月で、教えてgooがなくなることは本当に残念です。
社内用にいろいろ取り組んできました
沢山のご支援を頂いたこと、本当に感謝しています
もう少し時間あ有るので、それまでよろしくお願い致します

お礼日時:2025/06/06 17:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!