[[20211119050902]] 『VBAの質問です』(ヒデ) ページの最後に飛ぶ

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

 

『VBAの質問です』(ヒデ)

Private Sub Worksheet_Activate()

Dim ws As Worksheet
Dim ws2 As Worksheet

Set ws = Worksheets("寸法")
Set ws2 = Worksheets("指示書")

If ws.Range("B3:h3").MergeCells = True Then

   ws2.Range("f14,g14,h14").UnMerge

ElseIf ws.Range("B3:D3", "E3:H3").MergeCells = True Then

   ws2.Range("F14:F15,G14:G15,H14:H15").Merge

End If

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

別シートにてセルを結合したら分解
分解したら結合という事をしたいのですが上手くいきません

自分で書いたコードなので
おかしな点だらけかもしれませんが、
よければ誰か教えてください。

< 使用 Excel:unknown、使用 OS:unknown >


 (1)
  |    If ws.Range("B3:h3").MergeCells = True Then
  |        ws2.Range("f14,g14,h14").UnMerge
  |    ElseIf ws.Range("B3:D3", "E3:H3").MergeCells = True Then
  |        ws2.Range("F14:F15,G14:G15,H14:H15").Merge
  |    End If
 このコードの意図を書いてください。
 ElseIf ws.Range("B3:D3", "E3:H3").MergeCells = True の部分についてです。

 というのは、
    ws.Range("B3:D3", "E3:H3").MergeCells は
    Range("B3:D3", "E3:H3")がRange("B3:H3")なので、
    ws.Range("B3:H3").MergeCells と書くのと同じで、最初の判定と変わりありません。

     "B3:D3"が結合され、
 かつ"E3:H3"が結合されているなら、
 という意図なんですか?
 (意図は説明されないとわからない。テレパシーは使えないので)

 もし、そうなら、
     ElseIf ws.Range("B3").MergeArea.Address(False, False) = "B3:D3" _
            And ws.Range("E3").MergeArea.Address(False, False) = "E3:H3" Then
 などとすることになります。

 ちなみに、
 ws.Range("B3:D3").MergeCells = True AND ws.Range("E3:H3").MergeCells = True
 では、B3:H3がひとつに結合されている場合にも真になりますので、
 注意が必要です。

 (2)
 ws2.Range("F14:F15,G14:G15,H14:H15").Merge
 は、
 ws2.Range("F14:H15").Merge と書くのと何か違いがありますか?
 3つに分けて指定する意図は?

(γ) 2021/11/19(金) 06:11


γさんが確認されていることに加えて私も1点。

そもそも、そのコードどこに書いているのですか?
「Worksheet_Activate」ですから、なんかのシートがアクティブになったら実行したいのですよね?

(もこな2) 2021/11/19(金) 10:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.