• ベストアンサー

【365】セルの幅・高さを表示

20年以上前に作ったExcelファイルをコピー・編集を繰り返しながら使い続けています。 officeのバージョンアップや拡張子の変更などの影響なのか、エラーを起こすファイルが増えてきており見た目では分からない”ゴミ”が溜まってきているのかと考えるようになりました。 一念発起して、今後も使い続けるファイルを1から作り直すことにしました。 できる限り元ファイルからのコピーをしないようにしたいのですが、セルの幅や高さは元ファイルと同じにしたく、指定したセルの幅・高さを表示するマクロをご教示ください。 メッセージボックスに表示するマクロではなく、直接セルに表示(書き込み)させたいです。 セルの位置も固定ではなく、あらかじめ選択したセルのみが対象としたいです。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.2

表を選択した状態で結果を出す場合に選択範囲の右2列目と下2行目に結果を出していい場合は以下で試してみてください。 添付画像の場合B3:I9まで選択したとしてK列と11行目に結果が出ます。 Sub Test2() Dim mRng As Range Dim mCol As Long, mRow As Long mRow = Selection(Selection.Count).Row mCol = Selection(Selection.Count).Column For Each mRng In Selection Cells(mRng.Row, mCol + 2).Value = mRng.RowHeight Cells(mRow + 2, mRng.Column).Value = mRng.ColumnWidth Next End Sub

KO1014
質問者

お礼

再度のご回答ありがとうございました。 こちらの方が確認しやすいです。 こちらのマクロを採用させていただきます!! +2の部分を適当に修正して登録します。 大変助かりました!!

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

質問の画像の場合 A1からJ1まで選択して結果を表示 K3からK9まで選択して結果を表示 いう流れで考えました。幅もしくは高さは選択した範囲のセル数の多い方を優先します。 B3:I9まで選択して結果を出すというのも頭に浮かんだのですが、それぞれの表によってどのセル(右は表の右端でいいと思いますが一行目はあいてるかどうか不明なので)に書き出すのかが確定できないと思ったので上記の方法にしました。 Sub Test() Dim mRng As Range If Selection.Rows.Count > Selection.Columns.Count Then For Each mRng In Selection mRng.Value = mRng.RowHeight Next Else For Each mRng In Selection mRng.Value = mRng.ColumnWidth Next End If End Sub

KO1014
質問者

お礼

ご回答ありがとうございました。 わざわざ2つのマクロを実行する必要が無くていいですね。