[[20160205134458]] 『条件によって数字を囲んだり解除したり』(まっさん) ページの最後に飛ぶ

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

 

『条件によって数字を囲んだり解除したり』(まっさん)

次のような場合、エクセルマクロはどのように記述すればよいでしょうか。
A1セルからA31セルの各セルに1から31までの数字が記入されています。
B1セルからB31セルの各セルに○を記入すると上の数字が丸で囲まれ、◎を記入すれば上の数字が二重丸で囲まれ、B行の各セルに記入した○若しくは◎を削除すれば上の各セルの数字に付いた囲みも解除される。
A行の高さは12.75ポイント、各セルの列幅は1.55、
数字はMS明朝 9ポイント 黒文字で、縦横とも中央揃えです。
どうぞ宜しくお願いいたします。

< 使用 アプリ:、使用 OS: >


こんにちは

左ではなくて、上の数字ですか?

(ウッシ) 2016/02/05(金) 14:38


 回答ではありませんが、仕様を見直した方が良さそう。

 B【列】にわざわざ【入力】するのはユーザビリティが悪い、A【列】に直接アクションする
 例えば、A【列】のセルをダブルクリックor右クリック
 動作としては、セルの色塗り(無色、水色、青)程度にとどめる、とか。

 シート上に図形を描くのは後々のデータ処理がし辛くなるのでやめておいた方が良い。

(通りすがり) 2016/02/05(金) 15:09


ウッシ様。
有難うございます。ご指摘の通り左です。
A列のセル幅は1.55、各行の高さは12.75ポイントです。
どうぞ宜しくお願いいたします。
(まっさん) 2016/02/05(金) 15:13

通りすがり様。
有難うございます。
書類の様式で、日に丸か二重丸を付けなければなりません。
⓾のように二重丸11から二重丸31があれば、置き換えで済むのですが。
(まっさん) 2016/02/05(金) 15:36

 横から失礼します。

 >>書類の様式で、日に丸か二重丸を付けなければなりません。 

 どんな書類なんでしょうね?
 A列のすぐ右に B列があるわけですよね。で、そこに ○ や ◎ が入力される。
 なら、わざわざ、その左の A列の数字に ○囲みや ◎囲み なんかつけなくても
 一目瞭然だと思うんですがねぇ・・

 図形、できないことはないですけど、通りすがりさん指摘のように、何かと、煩雑になりそうですね。

(β) 2016/02/05(金) 15:47


Sub main()
'一例(Excel2007)
'事前準備
'挿入-図形で、基本図形の中から、円/楕円とドーナツをシートの適当な場所に配置して、
'書式設定で「塗りつぶしなし」にした上、それぞれ31個コピペしておく。

    Dim flg() As Boolean, i As Long, j As Long
    ReDim flg(ActiveSheet.Shapes.Count)

    For Each shp In ActiveSheet.Shapes
     If shp.Name Like "*円*" Then shp.Visible = False
     If shp.Name Like "*ドーナツ*" Then shp.Visible = False
    Next shp

    For i = 1 To 31
        If Cells(i, 2) = "○" Then
            For j = 1 To ActiveSheet.Shapes.Count
                If Not flg(j) Then
                    With ActiveSheet.Shapes(j)
                        If .Name Like "*円*" Then
                             .Height = Cells(i, 1).Height
                             .Width = Cells(i, 1).Width
                             .Left = Cells(i, 1).Left
                             .Top = Cells(i, 1).Top
                             .Visible = True
                            flg(j) = True
                            Exit For
                        End If
                    End With
                End If
            Next j
        End If

        If Cells(i, 2) = "◎" Then
            For j = 1 To ActiveSheet.Shapes.Count
                If Not flg(j) Then
                    With ActiveSheet.Shapes(j)
                        If .Name Like "*ドーナツ*" Then
                             .Height = Cells(i, 1).Height
                             .Width = Cells(i, 1).Width
                             .Left = Cells(i, 1).Left
                             .Top = Cells(i, 1).Top
                             .Visible = True
                            flg(j) = True
                            Exit For
                        End If
                    End With
                End If
            Next j
        End If
    Next i

End Sub
(mm) 2016/02/05(金) 16:42


コメント返信:

[ 一覧(最新更新順) ]


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