2017-11-23 17 views
1

は私が別のマクロで使用するとwotkedコードを持っていなかったことを今働いていないと私はアクティブに沿って実行時エラー1004を得続ける:エクセルVBA Activateメソッドは

Sub initialize() 

dim MonthName as string 
dim MainWB as workbook 
dim VisualWS as worksheet 

MonthName = cells (1,1).value 
Set MainWB = ThisWorkbook 
Set VisualWS = MainWB.Worksheets("Visual") 

With VisualWS 
    .Range("L1:W1").Find(MonthName, , xlValues, xlWhole).Activate 
End With 

MonthCol = ActiveCell.Column 

End Sub 
+0

は手動で要求されたセルを見つけてもらえますか? – MarcinSzaleniec

+0

@MarcinSzaleniecはい、なぜですか? –

答えて

1

docs on Range.Findによると、一致が見つからない場合は "Nothingを返します。"

ほとんどの場合、.Range()。Find()メソッドは一致するものが見つからないため、Activateを持たないNothingを返します。

は、代わりにこれを試してみてください:

Dim findResult As Range 
Set findResult = .Range("L1:W1").Find(MonthName, , xlValues, xlWhole) 
If findResult <> Nothing then findResult.Activate 
0

FindはよくNothingを返すことがありますので、私はむしろ記述します。

With VisualWS 
    set target = .Range("L1:W1").Find(MonthName, , xlValues, xlWhole) 
End With 
If target is Nothing Then 
    DoSomething 
else 
    MonthCol = target.Cells(1,1).Column 
End if 

(未テスト)

+0

[False](https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-activate-method-excel) - アクティブ化は、選択範囲内の単一のセルをアクティブとしてマークします。 –

+0

真剣に?あなたは文字通り、以前の(間違った**)回答を削除し、私がすでに投稿したものに置き換えました! –

+0

@ E.Villiger私が私のことを決める前に、あなたのことを見たことはありませんでした。しかし、-1のおかげで:-) –