2017-02-10 10 views
-1

「PP1 & PP2不足リスト」でボタンを押すとします。2つの条件に基づいてセルを選択するExcelのVBAコード

このボタンを押すと、マクロはD5とF5の値を取得し、これら2つの値が「PP1ペイントプラン」の別々の列に表示される行を探します。

これで、見つかった行の下にある列A:AFがすべてコピーされ、A2に貼り付けられます。

私は多くのループコードを試してコードを見つけましたが、これまでのところ私は運がなかったので、君たちのうちのひとりが、問題について新鮮な考えを出すことができると願っています。

+0

あなたは、このような答えを持っていない、あなたが試したものを私たちに示してください...ここでは例を参照してください:http://stackoverflow.com/a/30162390/4628637 – R3uK

+0

は依頼する[方法を参照してください。 ](http://stackoverflow.com/help/how-to-ask)を参照してください。 –

答えて

0

R3ukは正しいですが、新鮮なアイデアを探しているようです。

基準を満たす「PP1ペイントプラン」の行番号を見つけることができる数式を、その行番号を使用して以下のすべてをコピーする単純なマクロと組み合わせてみませんか?ループは必要ありません!

D5細胞とF5細胞と同じシートの空のセルに以下の式を入れてください。私はマクロでA1を使用しました。検索列を(私は$ D:$ Dと$ F:$ Fを使用して)順応的に変更してください。重要:この式に{}を追加するには、SHIFT + CTRL + ENTERを押してください。

= MATCH(D5 & F5、 'PP1ペイント計画' $のD:$ Dの& 'PP1ペイント計画' $ F:$ F、0)

次コピーこのコードおよび必要に応じてそれを変更。これは、数式を含むセルにintFoundRowという変数を設定します(A1をセル参照に変更します)。次に、その行の下のすべてをコピーし、それを宛先シートに貼り付けます。私はそれが何であるか分からないので、テキストを変更してください。

Sub CopyShortageData() 
    intFoundRow = Sheets("PP1 & PP2 Shortage list").Range("A1").Value 
    Range(Sheets("PP1 Paint plan").Range("A" & intFoundRow & ":AF" & intFoundRow), Sheets("PP1 Paint plan").Range("A" & intFoundRow & ":AF" & intFoundRow).End(xlDown)).Copy 
    Sheets("Your destination sheet").Range("A2").PasteSpecial xlPasteAll 
End Sub 
+0

ありがとうございましたGordon、私はランタイムエラー1004を得ています。このコードシート(​​ "PP1ペイントプラン")で範囲( "A"&intFoundRow& ":AF"&intFoundRow).Select –

+0

こんにちは、申し訳ありません、私コードをテストしていないし、 "選択"ステートメントを呼び出さないので、コードを変更し、それが動作することをテストしました。 – Gordon

+0

あなたはスターです! モジュール内で完璧に動作しますが、activeXボタンをクリックしても機能しません。しかし、これはボタン自体でこれをコーディングすることで解決されました。 Module2.CopyShortageDataPP1 とにかく非常に感謝しています。 Joe –

関連する問題