
セルの内容に関係なく、選択したセルの数をカウントするにはどうすればよいですか?
ユースケースは 2 つあります。今はユースケース 2 が必要です。
- 1つまたは複数の選択を行うときに、セルの数を知りたいのですが、
- 複数選択を使用して、正確に N 個のセルを選択したい。数 (画面のどこかに表示されているはず) が N に達するまで、選択とサイズの変更を続けます。
1 については回避策があります。テキストを含む単一のセルを選択し、コピーして (アニメーションの境界線が付くように)、選択を行い、貼り付けを押して、ステータス バーのカウントを確認します。
2 については、回避策 1 を何十回も繰り返してから元に戻すボタンを押さなくても済む回避策はわかりません。
答え1
ポイント 1 に対処するには、この VBa を使用できます。問題は、この詳細をどのように表示するかを説明していないことです。そのため、これをメッセージ ボックスとして追加しました。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim totalCells As Long
totalCells = Selection.Cells.Count
MsgBox (totalCells)
End Sub
VBaをSheet1に追加しました。MS Office に VBA を追加するにはどうすればよいですか?
オーバーフロー例外が発生するため、すべてのセルを選択しないようにしてください。
問題はポップアップが毎回発生することです。交換することをお勧めします。
プライベートサブ Worksheet_SelectionChange(ByVal Target As Range)
MsgBox (totalCells)
と
Range("M1").Value = totalCells ' CHANGE THE RANGE TO THE CELL YOU WANT
答え2
あなたが望むことを実現する唯一の方法は、VBA を使用することだと私は考えています。
これをセルに入力する関数が必要な場合は、次のようなものが機能します。
Public Function cellcount()
Application.Volatile
cellcount = Selection.Cells.count
End Function
選択を変更するたびに F9 キーを押して関数を再実行し、回答を得ることができます。
答え3
みなさん、本当にありがとうございます。上記の情報は数年前のものかもしれませんが、まさに今私が必要としていたものです。他の人のアイデアのきっかけになればと思い、私が自分のニーズに合わせて上記の情報を微調整しました。(もちろん、私たちのコストは実際には 1 時間あたり 2 ドルではありません。でも、お分かりいただけたと思います。) ありがとうございます!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const HOURS As Integer = 10 ' hours per cell
Const COST As Integer = 2 * HOURS ' dollars per cell
Const SPACER As String = " "
Dim numCells As Long
numCells = Selection.Cells.Count
If numCells < 2 Then
Application.StatusBar = False
Else
On Error Resume Next ' in case the selection is so large it causes an overflow error
Application.StatusBar = "Cells: " & numCells _
& SPACER & "Hours: " & (numCells * HOURS) _
& SPACER & "Cost: " & FormatCurrency(numCells * COST, 0)
End If
End Sub