2017-03-14 13 views
0

我是excel vba的新手。我使用一個有兩個條件的if塊來找到一個空的單元格區域。這個if塊在for循環中。現在我需要捕獲哪些條件得到滿足,以及如果該塊選擇了什麼單元格範圍。因爲我在裏面使用這個,所以我需要捕獲範圍Everytime,並使用它在for循環中爲每個元素生成一個圖表。以下是我正在使用的if語句語法。在if塊中查找滿意條件及其範圍

If worksheetfunction.counta(cells) = 0 
then 
range("a1").select 
else 
lastrow = activesheet.range("A10000").end(xlup).row 
Cells(lastrow+1,1).pastespecial paste:=xlpastevalues, operation:=xlnone, skipblanks:=false, transpose:=false 
End if 

我已經設置複製和基於if條件它要麼在如果粘貼A1或第二條件塊上的值。所以我需要一個變量來存儲在這個條件之後被選中的範圍。

因爲我有這個如果條件內for循環,並說我有5個值在該循環。所以我最終會得到四種不同的「拉斯特羅」值。但是如果條件選擇了,我需要捕獲所有的範圍。

對此的任何幫助將不勝感激。提前致謝!!

+0

'LASTROW = activesheet.range( 「A10000」)結束(xlup).row'這是一樣的'LASTROW =範圍( 「A10000」 ).end(xlup).row' – user3598756

回答

0

你可以是這樣的後:

Dim capturedRange As Range ' <--| declare a Range variable to store the captured range 

If WorksheetFunction.CountA(Columns(1)) = 0 Then ' <--| if no values in column A 
    Set capturedRange = Range("a1") ' <--| set 'capturedRange' to cell A1 
Else ' <--| otherwise 
    Set capturedRange = Range("A10000").End(xlUp).Offset(1) ' <--| set 'capturedRange' to column A first empty cell after last not empty one 
    capturedRange.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False 
End If 
+0

@viveksubramanian,這個代碼適合你嗎? – user3598756

+0

是的,這段代碼確實有效。謝謝。但我還沒有在粘貼在這個範圍內的數據上繪製圖表。將嘗試和更新。 –

+0

不客氣。然後,您可能想要將答案標記爲已接受。謝謝! – user3598756