2017-11-17 13 views
-1

私は商品と株数のマスターリストを持っていますが(下の画像を参照)、株式数が(別のシート上で)これを行うための最善の方法は何1リストオブジェクトが選択されたときに値を変更する方法

Example data set

を差し引い? (I VBAの疲れを少しあまりにも遠く取得していない)

編集:ここでは

は私の心が働いて、それを想像する方法を次のとおりです。 How I picture how it would work

+1

ただ、 "これは、セルのドロップダウンが他の項目、4-1、4である" と言う 'IF()'式を使うのか?何を試しましたか?なぜVBAが必要ですか? – BruceWayne

+0

ようこそへスタックオーバーフロー。この問題を解決するには、最新ではない試みを示してください。通常、コードを修正するのは、他の人の解答を読むよりも有益です。 https://stackoverflow.com/help/how-to-ask – Spangen

+0

@BruceWayneを参照してください.4は静的ではありませんが、私はそれをどのように処理するか分かりません。私が細胞を参照することができなければ?今はそれを試してみてください – Josh

答えて

1

基本的なVBAの例。

Worksheet_Changeイベントは、ドロップダウンを含むシート上にある必要があります。

変更されたセルのアドレスがドロップダウンのアドレスかどうかを確認するだけです。あなたは名前付き範囲を使うことができますし、私が以下で行ったように静的アドレスを使うこともできます。

私は参照可能なItemsという名前の範囲をリストに与えました。

それは別の用紙に、あなたが使用する必要がありますのでご注意くださいSheets("SheetName").Range("Items")

私も、リスト内の値を確認するために、単純なFor Eachループを使用 - それは辞書を使用するのに十分な大きさ得れば、それは良いかもしれ、バリアント配列、またはFind

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address = "$H$4" Then 
    Dim c 
    For Each c In Range("Items") 
     If c = Target.Value Then 
      c.Offset(0, 1).Value = c.Offset(0, 1).Value - 1 
      Exit For 
     End If 
    Next c 
End If 
End Sub 

Example

関連する問題