2017-02-10 35 views
-1

我希望發生的是「PP1 & PP2缺乏列表」上按下一個按鈕電池。VBA代碼在Excel中,選擇基於兩個標準

當這個按鈕被按下我想要的微距拍攝距離D5和F5的值,然後找到這兩個值出現在「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。更改搜索列accoridingly(我使用$ 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

感謝戈登,我得到一個運行時錯誤1004在這行代碼表(「PP1油漆計劃」)範圍(「A」&intFoundRow&「:AF」和intFoundRow)。選擇 –

+0

你好,對不起,我沒有測試過代碼,也沒有使用「select」語句,所以我更改了代碼並測試了它的工作原理。 – Gordon

+0

戈登你是一個明星! 在模塊中完美工作,但在單擊activeX按鈕時從未工作。但是,現在已經通過在按鈕本身上編碼來解決這個問題: Module2.CopyShortageDataPP1 無論如何非常感謝和問候。 喬 –