2016-05-13 14 views
2

以下は私が作業しているコードです。しかし、同じワークブックから別のワークシートを選択すると何かが間違っていることに気付きました。別のワークシートを選択した後に変数が間違っていたVBA

変数ShiftNameは、以下のコードのSheets("Cash").Selectを通過すると変化するようです。

ShiftNameの列がワークシート "ShiftRoster"の "B"から "Cash"の "C"に変更され、ShiftNameの出力が間違っていると思われます。

これを解決する方法があるかどうかチェックしたいと思いますか?

Sub Testing() 
    Sheets("Shift Roster").Select 

    Range("A1").Select 
    Cells.Find("LEAVE").Activate 
    r1 = ActiveCell.Row 

    Dim ShiftRowName As Integer 
    Dim ShiftColName As String: ShiftColName = "B" 
    Dim ShiftColLeave As String: ShiftColLeave = "E" 
    Dim ShiftName As String 
    Dim ShiftReason As String 

    Dim CashRowName As Integer 
    Dim CashColName As String: CashColName = "C" 
    Dim CashColLeave As String: CashColLeave = "H" 
    Dim CashName As String 
    Dim CashLeave As String 

    ShiftRowName = r1 + 1 

    Do While Cells(ShiftRowName, 1) <> "" 
     ShiftName = Cells(ShiftRowName, ShiftColName) 
     ShiftReason = Cells(ShiftRowName, ShiftColLeave) 

     If ShiftName = "" Or IsEmpty(ShiftName) Then 
      Exit Do 
     Else 
      'SOMETHING WENT WRONG FROM HERE ONWARDS 
      Sheets("Cash").Select 

      Range("C1").Select 
      Cells.Find("Name").Activate 
      r2 = ActiveCell.Row 

      CashRowName = r2 + 1 

      Do While Cells(CashRowName, 1) <> "" 
       CashName = Cells(CashRowName, CashColName).Value 

       If CashName = "" Or IsEmpty(CashName) Then 
        Exit Do 
       Else 
        MsgBox ShiftName 
        End If 
       CashRowName = CashRowName + 1 
      Loop 

      End If 
     ShiftRowName = ShiftRowName + 1 
    Loop 

End Sub 
+0

はい、 '選択 'と' * .Active ...'プロパティを使用しないでください。彼らは本質的に信頼性が低く、また遅いです。 – RBarryYoung

+0

@RBarryYoung代わりに何を使うべきですか? – stupidgal

+0

ダイレクトレンジを使用し、オブジェクトインスタンスを 'SET'で変数に保存する必要があります。 – RBarryYoung

答えて

4

あなたの範囲/セル方式クオリファイ:代わりに

ShiftReason = Cells(ShiftRowName, ShiftColLeave) 

使用

ShiftReason = Sheets("Shift Roster").Cells(ShiftRowName, ShiftColLeave) 

をので、あなたのコードは、あなたが参照しているどのシートを正確にを知っています。範囲を限定することなく、ActiveSheetオブジェクトを参照しているとみなされます。

関連する問題