2012-01-20 10 views
1

文字列(たとえばNames)を持つ特定の列のセルを検索しようとしています。列の対応するセルを右にコピーします(つまり、 1))、それを別のシートのカラムに貼り付けます。私は、私が望む範囲変数を見つけるために次のコードを持っています。しかし、私は別のシートから選択することはできません!
Sheets(1).MyRange.Copyを使用している場合は、受け付けません。私は間違った方法で範囲を参照していますか?私は間違って何をしていますか?ここで特定の文字列を持つセルの隣にセルをコピー/ペーストする

私はMyRangeを取得するために使用したコードです:

Option Explicit 

Sub SelectByValue(Rng1 As Range, Value As Double) 

Dim MyRange As Range 
Dim Cell As Object 

'Check every cell in the range for matching criteria. 
For Each Cell In Rng1 
    If Cell.Value = Value Then 
     If MyRange Is Nothing Then 
      Set MyRange = Range(Cell.Address) 
     Else 
      Set MyRange = Union(MyRange, Range(Cell.Address)) 
     End If 
    End If 
Next 


End Sub 

Sub CallSelectByValue() 

'Call the macro and pass all the required variables to it. 
'In the line below, change the Range, Minimum Value, and Maximum Value as needed 
Call SelectByValue(Sheets(1).Range("A1:A20"), "Tom") 

End Sub 

ワン・モア質問:むしろ(例えば「A1:A20」)を見て正確な範囲を指定するよりも、私はすべてを見てみたいですしかし、私は(A:A)を使いたくないので、Aのすべての行を見ることはできません。列Aの項目を持つセルだけを見る方法はありませんか?

ありがとうございます。

アル

答えて

1

あなただけMyRange.Copyを必要としています。値を持っているかもしれない、あなたは

With Sheet1 
    Set rngToSearch = Application.Intersect(.Columns(1), .UsedRange) 
    End With 

を使用することができます...または多分(.SpecialsCellsを見て)

+0

こんにちはティムだけの列のセルに制限するに

、応答に感謝します。最初の点に関しては、私は実際にSheet2でこのマクロを実行しますが、Sheet1からSheet2に対応するMyRangeをコピーする必要があります。 Sheets(1).MyRange.Copyを使用すると、動作しません。あなたはそれを書く正しい方法を知っていますか? –

+0

明確にするために、MyRangeが(B1:B4)であったと仮定しましょう。このMyRangeを私が使用したシート(例えば、シート1または3、または...などの "B1:B4" ) –

+0

MyRangeをコピーする場合は、MyRange.Copyを使用します。シート修飾子は必要ありません。 –

関連する問題