0

2 つの異なるドロップダウン メニューを機能させるには、助けが必要です。各メニュー項目には、画像の形で答えを返す選択肢が必要です。1 番目のメニューは機能しますが、2 番目のメニューは機能しないようです。同じ名前の 2 つの Sub worksheet_calculates を使用できないことはわかっていますが、範囲 (f1:f18) でもエラーが発生します。メニューはまったく同じことを行いますが、異なるセルで回答を提供します。Excel2010 の Visual Basic で使用しているコードを添付しました。:f18 を削除すると、最初のメニューがうまく機能します。私は私の欲求と問題を伝えていることを願っています. ありがとう

Private Sub Worksheet_Calculate()
    Dim oPic As Picture
    Me.Pictures.Visible = False
    With Range("F1:F18")
        For Each oPic In Me.Pictures
            If oPic.Name = .Text Then
                oPic.Visible = True
                oPic.Top = .Top
                oPic.Left = .Left
                Exit For
            End If
        Next oPic
    End With
End Sub
4

1 に答える 1

0

わかりました、あなたが私に言ったことに基づいて、私はあなたのコードを修正しました(以下を参照)。

Excel 2010 で動作確認済み

VBEditor で、ドロップダウンがあるシートに関係なく、プロジェクト エクスプローラーでそのシートの名前をダブルクリックし、このコードをそのシート モジュールに貼り付けます。

Private Sub Worksheet_Change(ByVal Target As Range)

'This line checks to see whether the cell that changed is F1 or F18.
If Intersect(Target, Range("A8,A11")) Is Nothing Then Exit Sub

Dim oPic As Picture

'This line hides all the pictures on the sheet.
ActiveSheet.Pictures.Visible = False

'This line looks through all the pictures on the sheet and unhides the one _
'whose name matches the name in the drop down.
For Each oPic In ActiveSheet.Pictures
    If oPic.Name = Target.Value Then
        oPic.Visible = True
        If Target.Address = Range("A8").Address Then
            oPic.Top = Range("F1").Top
            oPic.Left = Range("F1").Left
        Else
            oPic.Top = Range("F18").Top
            oPic.Left = Range("F18").Left
        End If
        Exit For
    End If
Next oPic
End Sub  


このコードは、有効にしている場合にのみ機能しますEvents。これを簡単に確認するには、これをイミディエイト ウィンドウに貼り付けてEnter(イミディエイト ウィンドウCtrl+Gを開く) を押します。

?Application.EnableEvents

結果がTrueである場合は、準備完了です。と表示されている場合Falseは、これをイミディエイト ウィンドウに貼り付けて を押しEnterます。

Application.EnableEvents = True

上記Targetのコードに表示されている は、値が変更されたワークシート内のセルを参照しています。そのシートの任意のセルの値が変更されるたびに、このコードが実行されます。そのためIf Statement、変更されたセルがF1またはであるかどうかを確認するために、最初に最初のものを含めましたF18

の詳細については、こちらを参照してくださいWorksheet_Change Events
の詳細については、こちらを参照してくださいTarget

お役に立てれば!

于 2013-11-06T15:36:37.690 に答える