[[20030610133657]] 『結合セルのカウント』(Foolish) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『結合セルのカウント』(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.