[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『結合セルのカウント』(Foolish)
はじめまして、VBA初心者のFoolish と申します。
表題の件ですが、現在 15分単位に区切られた予約表をVBAにて作っております。
ボタンのクリックで予約・削除が出来るものです。
例えば、1時間の予約を取った場合 4セルを結合して枠を取るようになっております。
問題は「予約の削除」の時ですが、誤って 2枠同時に削除しないように、
エラーメッセージ(メッセージBOX)を出そうと考えております。
結合したセルが(A1:A4)(A5:A6)と二つ並んだ場合、これらを2つとカウントしてほしいのです。
しかし、予約表は週単位でランダムに入っており 「セレクトしたセル」 のみをカウントしたいのです。
予約を入れたセルには文字が入っております。
セル = Selection.Cells.Count
と、やると@結合したセルを「1」とカウントしてくれなく困っています。
セルには文字が入っているので、「CountA」関数で出来そうな気がしますが、
「セレクトしたセル」限定となると。
セル = Selection.Cells.CountA
が、成り立てば良いのですが?
ニックネームどおり「Foolish」なもので・・・どなたかご教授お願いします。
結合セルはやっかいですね。
(A1:A4)(A5:A6)を選択して、下のを実行すれば 2とカウントしてくれると思います。 文字をカウントするのではなく、結合セルとしてカウントするように 考えてみました。
複数行列での結合セルはうまくカウントできませんので、 その際は改造が必要です。
Sub macro() Dim buf As Integer Dim prev As Variant
For Each ad In Selection If ad.MergeCells And prev <> ad.MergeArea.Address Then buf = buf + 1 End If prev = ad.MergeArea.Address Next
MsgBox "結合セルは " & buf & " です。" End Sub
(ramrun)
ramrunさん、ありがとうございます。希望通りの動作いたしました。
結合セルは、非常に厄介なんですね。
初心者の私には、ほとんどそのままコピーして使わせて頂くのが精一杯でした。
上記のVBAを時間をかけて理解させていただきます。
ありがとうございました。
(Foolish)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.