2016-09-29 104 views
0

可以使範圍與「OR」條件相同... 任何想法來解決它?使用宏的多個範圍選擇

Sub search() 

Dim myArray As Variant 
Dim mRange As Range 
Dim mFCell As String 
Dim mCell As Range 
Dim mName As String 

Dim i As Integer 
Dim finalrow As Integer 

myArray = Range("J2:J4").Value 

mName = myArray.Value 

finalrow = Sheets("Sheet1").Range("A10000").End(xlUp).Row 

Set mRange = Sheets("Sheet1").Range("A:A") 
Set mCell = mRange.Find(What:=mName, MatchCase:=False, lookAt:=xlPart) 

For i = 2 To finalrow 

      If Sheets("Sheet1").Cells(i, 1) = mCell.Value Then 
       mFCell = mCell.Address 
       Range(Cells(i, 1), Cells(i, 1)).Copy 
       Range("I1000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats 
       'Sheets("Sheet2").Range("B1000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats 
       Set mCell = mRange.FindNext(mCell) 

      End If 
Next i 

End Sub 

所以,我需要找到解釋在評論中的multipleRange。

+0

你問如何把多個單元格(即不相鄰)的範圍內?或者你的問題是接收多單元範圍的'.Value'屬性? – arcadeprecinct

+0

@arcadeprecinct 噢我的.. 對不起,我想問一下關於接收。多個範圍的.Value屬性 我不知道解決它。 – Beans

+0

你的意思是不連續範圍或連續(「矩形」)範圍? – arcadeprecinct

回答

0

要分配的範圍內的值,以一個陣列需要陣列聲明作爲變體

Dim myArray As Variant 
myArray = someRange.Value 

結果是尺寸的陣列(1至行數)X 1(到的數列),即使範圍是一維的(只有一行或一列)。所以

myArray = Range("J2:J4").Value 

值會myArray(1, 1)myArray(2, 1)myArray(3, 1)

+0

看到我的新編輯。我已經應用此代碼 – Beans

+0

@Beans我添加了信息 – arcadeprecinct

+0

我已經嘗試了代碼,但其作品僅用於其餘的第一個數組,其顯示錯誤「對象變量或塊變量未設置」。 – Beans