2

概要: Excelファイルのさまざまなシートから名前を取得し、それらを「マスターリスト」にまとめるマクロを作成していますが、別のシートのセルを参照するのに問題があります。

問題:シート名を参照として使用して特定のセルを参照するとSheets("MasterList").ActiveCell.Offset(0, 1)、何も取得されません。ただし、マクロを削除するとSheets("MasterList")正常に機能します(マクロは現在「MasterList」にあり、これが機能する唯一の方法です)。また、シートの名前のスペルは私のコードでは正しいものでした。

質問:なぜこれが起こっているのですか?コードの背後にあるロジックは正しいようで、シート名のスペルが正しいです。

コード:

Do              

   If Sheets("MasterList").ActiveCell.Offset(0, 1) = firstName Then        'IF FIRST AND LAST NAMES MATCH, EXIT THE CHECK

          Exit Do

   End If

   On Error Resume Next

   Cells.Find(What:=lastName, After:=ActiveCell, LookIn:=xlFormulas, _
   LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
   MatchCase:=False, SearchFormat:=False).Activate

Loop Until Err.Number > 0
4

1 に答える 1

5

ActiveCellApplicationではなく、オブジェクトのプロパティですSheet

は 1 つだけActiveCellで、現在アクティブなシートのアクティブ セルです。

あなたがやろうとしていることは完全には明らかではありません。Selectしかし、一般的にActivate、この種のコードは避けるべきです。代わりに次のようなものを使用します:

Dim wsMasterList as Worksheet
Set wsMasterList = Thisworkbook.WorkSheets("MasterList")  ' assuming the vba code is in the workbook containing MasterList

MasterList で最後に使用されたセルを追跡するには、次のような変数を使用します

Dim rMasterList as Range
Set rMasterList = wsMasterList.Cells( ...  ' Specify the cell you want

次にrMasterList.Offset(0, 1)、そのセルに関連するセルを参照するために使用します

MasterList での検索:

Dim cl as Range
Set cl = wsMasterList.UsedRange.Find( ... )
If Not cl Is Nothing Then
    ' cl will be Nothing if the search term is not found
    ' ...
于 2012-08-25T23:51:22.087 に答える