質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

3回答

5741閲覧

結合セルに対してオートシェイプで自動丸付けする方法

cokecoke

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/07/31 02:36

前提・実現したいこと

セルをクリックすると自動でオートシェイプの丸が付くようなシートを作成しています。
過去の資料を使用して、結合されていないセルに対してはクリックで丸付け、再クリックで丸が消えるという
マクロは確認できていますが、クリックするセルが結合している場合の方法が分かりません。
どのようにすれば、結合セルに対して丸を付けられるでしょうか。

発生している問題・エラーメッセージ

例えば挿絵のように、ある項目に対しYES,NOを回答するのに
丸ポツをクリックすると文字に図形が自動挿入されるのですが
セルが結合されている場合は図形が挿入されません。
イメージ説明

該当のソースコード

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim sp As Integer, i As Integer
If Target.Count > 1 Then Exit Sub
'マクロの有効範囲の指定 適宜拡張すること
If Intersect(Target, Range("C7:AG205")) Is Nothing Then Exit Sub
With Target
For i = 1 To Me.Shapes.Count
' If Left(Shapes(i).Name, 4) = "Oval" Then
If Left(Shapes(i).Name, 4) = "Oval" Or Left(Shapes(i).Name, 8) = "Straight" Then
If Me.Shapes(i).TopLeftCell.Address = .Address Then: sp = i

End If Next i If sp Then Shapes(sp).Delete Else Select Case .Address(0, 0) Case "O7", "T7" Me.Shapes.AddShape(msoShapeOval, .Left + 15, .Top, .Height + 10, .Height).Fill.Visible = msoFalse Case "C7" Me.Shapes.AddLine(.Left, .Top + .Height / 2, .Left + .Width + 500, .Top + .Height / 2).Fill.Visible = msoFalse End Select End If End With

End Sub

試したこと

いろいろな方法を調べましたが
マクロ初心者のため分かりませんでした。

何か良い方法は有りますでしょうか。
ご回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

MergeAreaで指定します。
以下参考
VBAのシェイプオブジェクトを結合セルに生成する

投稿2020/07/31 05:49

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

目的のコードとは違いますが、B1が(A1などと)結合されているか否かを判定して
〇を入力するとこういうコードみたいですね。

実際は、ワークシートイベントの

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Targetを受けっとって
Target.MergeCellsで判定・記述すると思いますが・・。

参考:Office TANAKA様 結合セルを調べる

VBA

1Sub Sample() 2 3 4'結合セル 5 6If Range("B1").MergeCells Then 7 8 MsgBox "B1は結合されているのでスルー" 9 10Else 11 MsgBox "B1は結合されていないので〇を入力" 12 Range("B1").Value = "〇" 13End If 14 15 16End Sub

投稿2020/07/31 03:30

編集2020/07/31 05:35
mako1972

総合スコア383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Select Case .Address(0, 0)

msgbox .address
msgbox .cells(1).address
select .cells(1).address(false,false)

のように
メッセージボックスにセルのアドレスを表示して見て、
変数「Target」にどんなセル範囲が入っているか確認し、
どんな文字列と比較しようとしているか考えてみてください。

投稿2020/07/31 03:25

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問