[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件によって数字を囲んだり解除したり』(まっさん)
次のような場合、エクセルマクロはどのように記述すればよいでしょうか。
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列のすぐ右に B列があるわけですよね。で、そこに ○ や ◎ が入力される。 なら、わざわざ、その左の A列の数字に ○囲みや ◎囲み なんかつけなくても 一目瞭然だと思うんですがねぇ・・
図形、できないことはないですけど、通りすがりさん指摘のように、何かと、煩雑になりそうですね。
(β) 2016/02/05(金) 15:47
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.