2017-06-26 6 views
1

指定した範囲(A1:B2)にある値にパラメータとして渡された値(セルに書き込まれた値D1)を乗算するプロシージャを作成しました。範囲の値をVBAオブジェクトに格納する

元の値を操作する別のパラメータを使用して同じマクロを再度実行するにはどうすればよいですか?マクロが少なくとも1回実行されている(私はそれを行う方法を見つけました)が、元の値を格納する方法と場所はわかりません。

例えば、私は

Range("A1").Value = 1 
    Range("A2").Value = 1 
    Range("B1").Value = 1 
    Range("B2").Value = 1 
    Range("D1").Value = 2  

を持つマクロボタンをクリックして、手動で32からRange("D1").Valueを編集した後、ここで、次の

Range("A1").Value = 2 
    Range("A2").Value = 2 
    Range("B1").Value = 2 
    Range("B2").Value = 2 

として範囲Range("A1:B2")の値を取得し、もう一度マクロボタンをクリックして私のプロシージャは、次の値を返すようにしたい

Range("A1").Value = 3 
    Range("A2").Value = 3 
    Range("B1").Value = 3 
    Range("B2").Value = 3 

最小限の手順では、私はこれが良い例であると思います。この

dim rng as Range 
    dim MyRange as Range 
    set MyRange = Range("A1:B2") 

    For each rng in MyRange 
      rng.value = rng.value*Range("D1").Value 
    next rng 

ような構造である可能性があります。おかげ

フランチェスコ

+0

コードを提供することをお勧めします。 – Vityata

+0

合計値に応じて、元の値をVBA配列またはワークシートに格納します。 (まったく上書きしないでください)。また、[良い質問をするにはどうすればいいですか?](http://stackoverflow.com/help/how-to-ask)のヘルプトピック、および[最小限で完全で検証可能なサンプルを作成する方法] (http://stackoverflow.com/help/mcve) –

答えて

1

私はよく理解した場合、何が欲しいのは毎回あなたがボタンを使用してサブと呼ばれ、これは非常にサブ以内にこのデータを使用を追跡する方法です。

(私は通常、私のプロジェクトに変数モジュールを作成します)モジュールに公開変数を作成し、ボタンを使って呼び出すサブメニューでこのデータを更新することが1つの方法です。

'Your public variable inside a module (VariablesModule) 

Public param() As Variant 

'Your general code 

Call procedure(VariablesModule.param) 

'Inside your sub 

Sub procedure(byVal paramVal as Variant) 
'(your code) 
ReDim param(0 To n) As Variant 
Set param(1) = ABCDEFG 
End sub 

第2の方法は、このデータを範囲内に保存してサブ内で使用/更新することです。

+0

こんにちは、私たちが同じことについて話しているのかどうかはわかりません。 「2番目の方法は、範囲内にこのデータを保存し、サブサブ内で使用/更新することです」と言うときは、これが目標です(元のデータのどこかに保存することです)。 このオプションを試しましたが、非常に時間がかかります。私はメモリ内で仕事を遂行する可能性があるのであれば、私はグーグルでグーグルに驚いていました。 ありがとうございました – Franco

+0

@Francoあなたの軌跡値を定数/パブリック変数(私の記事を参照)に保存し、セル上で操作する代わりにこれらの変数を操作することができます。このように、プロシージャーが呼び出されると、元の値は変更されません。 (私はあなたの質問が正しいことを望んでいると思うが、これは私がoyuが達成したいと思う) –

+0

@ Antoin.Dありがとうございました。しかし、私の投稿を見ると、それは理論レベルの解決策だと思っていました(「私はいくつかのグローバル変数が必要ですが、元の値をどのように/どこに格納するかわかりません」)実際に実装する方法はわかりません。 初期化するのに適切なオブジェクトは何ですか?アレイ? "私"(コミュニティ)のために、私がこの例で示したデータを持つコードのスクラッチを書くことができますか?私はちょうどオブジェクトの初期化のステップとそれにデータを格納するステップが必要です(文法上の間違いを本当にお詫び申し上げます) ありがとうございました – Franco

関連する問題