ExcelのVBAコードについて教えてください。 シート名「審査」に Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("Z12")) Is Nothing Then If Target = "電子無" Then Call shp_move(ActiveSheet.Shapes("電子審査"), Range("L6")) Call shp_move(ActiveSheet.Shapes("審査完了"), Range("L9")) Call shp_move(ActiveSheet.Shapes("チェック完了"), Range("L12")) Call shp_move(ActiveSheet.Shapes("PDF"), Range("L15")) End If End If If Not Intersect(Target, Range("Z13")) Is Nothing Then If Target = "電子有" Then Call shp_move(ActiveSheet.Shapes("電子審査"), Range("L6")) Call shp_move(ActiveSheet.Shapes("審査完了"), Range("L9")) Call shp_move(ActiveSheet.Shapes("チェック完了"), Range("L12")) Call shp_move(ActiveSheet.Shapes("消防PDF"), Range("L15")) End If End If If Not Intersect(Target, Range("Y11")) Is Nothing Then If Target = "紙申請" Then Call shp_move(ActiveSheet.Shapes("紙審査"), Range("L6")) Call shp_move(ActiveSheet.Shapes("紙審査完了"), Range("L9")) Call shp_move(ActiveSheet.Shapes("紙PDF"), Range("L12")) End If End If End Sub Sub shp_move(shp As Shape, r As Range) With r shp.Top = .Top + (.Height - shp.Height) / 2 shp.Left = .Left + (.Width - shp.Width) / 2 End With End Sub があります。同じシートのセル値に対応して、図形を指定セルに移動できるコードです。 このコードだと問題があり、それを解決する方法を教えてください。 Z12には「=IF(AND(Y11="電子申請",Y12="無"),"電子無","")」の数式があり Z13には「=IF(AND(Y11="電子申請",Y13="Web"),"電子有","")」の数式があります。又、Y11「=受付!D2」Y12「=受付!D12」Y13「=受付!E12」があり それぞれのセル値が「シート名:受付」から引用されており、又、受付シートのセル値も同じシート内で色々な数式によりセルに反映されております。 受付シートでセル値を変更してもこのVBAコードでは上手く動作してくれません。 直接「Y11・Z12・Z13」に指定文字を入力すると上手く動作してくれます。 以前、受付シート側でのコード設定を教えて頂きましたが、受付シートには、元々複雑なVBAコードが設定されており、今回は「審査シート」にてコードを設定して図形を動かしたいでです。 Private Sub Worksheet_Change(ByVal Target As Range) に問題があるとの回答もいただいております。 何度か同じような質問をしており、恐縮ですが、 受付シートセル値に合わせて、審査シートの図形を上手く移動させる 解決方法を教えてください。
Visual Basic