2016-05-16 21 views
0

次のコードに問題があります。ファイルを開くたびに型の不一致のエラーメッセージが返されます。問題は、ファイルがいくつかのPCの上で正常に動作する一方、私のラップトップでは、このエラーが発生するということです。VBA Time(Now)型の不一致エラー

Private Sub Workbook_Open() 

Sheets("Report").Unprotect 
' 
If Date <> Sheets("Report").Range("A1") Then 

If Time(Now) >= 6 Then 

Sheets("Report").Range("A1").Value = Date 
Sheets("Report").Range("C3").Value = 0 

End If 
End If 

Sheets("Report").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ 
     , AllowSorting:=True, AllowFiltering:=True 

End Sub 

答えて

1

Hour(Now())とする必要があります。時分と秒、日月と年。タイプミスマッチは、異なるタイプを間違った変数タイプに入れようとしているか、または傾けていない2つのタイプについて比較しようとしています。したがって、F1キーを押すと時刻が返され、整数と比較されます。

0

Nathan_SavTime(now)Hour(now())に置き換えて表示すると、これが一部のPCで機能するのは興味深いですが、必要な修正が行われるかどうかはわかりません。

If Hour(now()) >= 6 Then 
    Sheets("Report").Range("A1").Value = Date 
    Sheets("Report").Range("C3").Value = 0 
End If 

上記のコードは、時刻が06:00〜23:59までの場合に実行されます。

これは目標ですか。 Nathan_Savが示されているように

ここでも、他の選択肢があってもよい: -

Second(now()) >= 6 =ラン分が59秒

Minute(now()) >= 6 =実行するまで6秒以上である場合に時間あれば時間は午前23時59分

までの6時00分以上である場合に実行= Hour(now()) >= 6

59分までに等しい又は6分よりも大きいです=現在の月の上端から6日以上になると実行されます。 12月28日

までの月が6月以上である場合に実行します

Month(now()) >= 6 =(第6月))31に

年は、この特定のリストには中に入れることができません。

+0

ファイルを開くときに、その特定の瞬間のコンピュータの時刻(正確な時刻)が6 AMを超え、一部のデータ(セルA1とC3)をリセットし、時間が午前6時に到達しなかった場合:00〜5:59)、特定のデータをリセットしないでください。 –

+0

しかし、 'Hour(now())'はうまくいきます.GaryとNathanの両方にお返事いただき、ありがとうございます。私はまだ、「Time(Now)」が他のPCでどうやって仕事をしたのか、混乱しています...コードを書いたときに自分でテストしました。 –