私は、範囲の各値を2つの列から対応する値に変更するコードを記述しようとしています。たとえば、私の範囲内の値が€29.99の場合。表と列1を見て、その値と等しい値を見つけたら、その範囲のセルを列2の隣の値24.99に変更します。IF文を使用すると、出力はすべて同じ番号を返し続けますか?
私が書いたコードは、マクロが影響するすべてのセルに対して常に同じ値を返します。これは、列2の最小値(9.99ポンド)です。したがって、たとえば€59.99、29.99などの値さえも£9.99に変更されています。なぜこれが起こっているのかわからないのですか?またはそれを解決する方法?
€RRPをカラム1であり、£RRPは、カラム2
これは
すべてのヘルプは大きくなるであろう 'デジタル€' であるものの一例です感謝。
Sub EurosToPounds()
Dim rng As Range
If Sheets("Pricing Matrix").Range("InPounds") = "TRUE" Then
Exit Sub
ElseIf Sheets("Pricing Matrix").Range("InPounds") = "False" Then
For Each rng In Worksheets("Digital €").Range("Digital")
If rng = Range("Euro1") Then
rng.Value = Range("Euro1").Offset(0, 2).Value
ElseIf rng = Range("Euro2") Then
rng.Value = Range("Euro2").Offset(0, 2).Value
ElseIf rng = Range("Euro3") Then
rng.Value = Range("Euro3").Offset(0, 2).Value
ElseIf rng = Range("Euro3") Then
rng.Value = Range("Euro3").Offset(0, 2).Value
ElseIf rng = Range("Euro4") Then
rng.Value = Range("Euro4").Offset(0, 2).Value
ElseIf rng = Range("Euro5") Then
rng.Value = Range("Euro5").Offset(0, 2).Value
ElseIf rng = Range("Euro6") Then
rng.Value = Range("Euro6").Offset(0, 2).Value
ElseIf rng = Range("Euro7") Then
rng.Value = Range("Euro7").Offset(0, 2).Value
ElseIf rng = Range("Euro8") Then
rng.Value = Range("Euro8").Offset(0, 2).Value
ElseIf rng = Range("Euro9") Then
rng.Value = Range("Euro9").Offset(0, 2).Value
ElseIf rng = Range("Euro10") Then
rng.Value = Range("Euro10").Offset(0, 2).Value
ElseIf rng = Range("Euro11") Then
rng.Value = Range("Euro11").Offset(0, 2).Value
ElseIf rng = Range("Euro12") Then
rng.Value = Range("Euro12").Offset(0, 2).Value
End If
Next
Sheets("Digital €").Select
Sheets("Digital €").Range("Digital").Select
Selection.NumberFormat = _
"_-[$£-809]* #,##0.00_-;-[$£-809]* #,##0.00_-;_-[$£-809]* ""-""??_-;[email protected]_-"
Sheets("Pricing Matrix").Select
Worksheets("Pricing Matrix").Range("InEuros") = "TRUE"
Sheets("Pricing Matrix").Select
Worksheets("Pricing Matrix").Range("InPounds") = "FALSE"
End If
End Sub
このコードは数字がに変化させ、次のように私のコードがある...
次のように提案する別の方法がある...しかし
Sub EurosToPounds()
Dim rng As Range
If Sheets("Pricing Matrix").Range("InPounds") = "TRUE" Then
Exit Sub
ElseIf Sheets("Pricing Matrix").Range("InPounds") = "False" Then
For Each rng In Worksheets("Digital €").Range("Digital")
Dim foundRange As Range
Set foundRange = Range("EuroRange").Find(rng.Value) ' EuroRange should contain (
' Euro1, Euro2,.. etc).
If Not foundRange Is Nothing Then rng.Value = foundRange.Offset(0, 2).Value
Next
Sheets("Digital €").Select
Sheets("Digital €").Range("Digital").Select
Selection.NumberFormat = _
"_-[$£-809]* #,##0.00_-;-[$£-809]* #,##0.00_-;_-[$£-809]* ""-""??_-;[email protected]_-"
Sheets("Pricing Matrix").Select
Worksheets("Pricing Matrix").Range("InEuros") = "TRUE"
Sheets("Pricing Matrix").Select
Worksheets("Pricing Matrix").Range("InPounds") = "FALSE"
End If
End Sub
この中に結果は、 ...
私は、2番目の方法が "Digital€"のセルの一部に数式を含んでいるので、2番目の方法が機能しない可能性があると感じています。数式を含むセルを無視する方法はありますか、それはそれを解決するかもしれません。何度もお世話になりました!
はあなたが変数の値を監視するためにF8キーを使用してコードをステップ実行しようとしたことがあり助けていますか? – SJR
これは、名前付き範囲が何を参照しているかを知らなければ、答えにくいです。ワークシート "Digital€"の注釈付きスクリーンショットは、大いに役立ちます。 – Comintern
ありがとう、申し訳ありませんが、イメージを追加するのがいかに簡単か分かりませんでした。効果的に私がマクロを実行しているときに起きていることは、「Digital€」の数字の大半が9.99になるということです。 –