|
▼たけ さん:
>初回の質問に自分の描くコードを記載しておりました.
>(これがソースかどうかは分かりませんけど)
どうも失礼しました。これだけだと動作に問題なはいと思いましたので。
よく見ると、問題あったようです。
>一つだけつくってみましたが,cells(4,48)に1が入力された後,
>オートシェイプの塗りつぶしには反映されていません(>_<)
これ最初に書いてましたかね。?これなら何がいけないか一発で判りました。
見逃したかな?
>--------------------------------------------
>Private Sub Worksheet_Change(ByVal Target As Range)
>
>Application.EnableEvents = False
> If Target.Address = Cells(4, 48).value Then
If Target.Address = Cells(4, 48).Address Then
> Select Case Target.Cells
'未確認ですが、cellsだと、もし、複数のセルを選択して、その中の1つのセルだけ変化させると
'どうなるんだろ?エラーになるような気がします。キチンと指定した方が安全且つ、わかり易い
Select Case Target.Cells.value
> Case 1
> Sheets("反映シート").Select
> ActiveSheet.Shapes("pp001").Select
> Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
> End Select
>
> End If
>Application.EnableEvents = True
>
>End Sub
多分これで動くと思いますが。。。。実験はしてません。
私ならこんな書き方をします。やってる事は同じです。
Private Sub Worksheet_Change(ByVal Target As Range)
const shName as string = "Sheet1" 'シート名
Application.EnableEvents = False
If Target.Address <> Worksheets(shName).Cells(4, 48).Address Then Exit Sub
If Target.Value = 1 Then '対象セルは1つとしている。
Sheets("反映シート").Select 'この辺りselectしなければ駄目なのかな〜??
ActiveSheet.Shapes("pp001").Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
End If
Application.EnableEvents = True
End Sub
|
|