2016-09-29 76 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