2016-06-16 10 views
2

時間を識別し、その時間が第2列にある対応する行のセルの値に1を加算するサブがあります。たとえば、その7時30分と私はボタンを押すと、それは7時と行のセルに1を追加します。私のコードは、昨日完璧に動作したときに型の不一致のエラーを出しています。次のように私のコードは次のとおりです。Excelでタイプミスマッチエラーが発生しました。

Private Sub CommandButton1_Click() 
Sheets("Front End").Unprotect ("29745") 
h = Hour(Now) 
    For Each c In range("B8:B20") 
     If h = Hour(c) Then 
      c.Offset(0, 3) = c.Offset(0, 3) + 1 
      Exit For 
     End If 
    Next c 
Sheets("Front End").Protect ("29745") 
Unload Me 
End Sub 

私の人生は、コードと間違っているかを把握するために、私はカント私はそれを書いたとき、それは昨日一日中働きました。

ターゲットセル内のテキストがある場合には任意のヘルプは大幅に

+0

B8:B20の内容を貼り付けできますか? – Bathsheba

+0

あなたは24時間の会計処理をしていますか? – Raystafarian

+0

時間の値は12時間単位です。 B列の値は一致する時刻です – Vbasic4now

答えて

3

VBAのHour()が24時間のタイムスケールを表す0〜23の値を返すというエラーが原因である可能性があります。 12時間のタイムスケールを使用していると言いましたので、Modコマンドを使用して、対応する時間に追加する必要があります。

また、c.Offset(0,3)の値が数値でない場合、+ 1コマンドでタイプの不一致エラーが発生します。その問題を回避する最も簡単な方法は、その行を変更してc.Offset(0,3) = CInt(c.Offset(0,3)) + 1とし、最初にセルの値を整数に変換して型の不一致エラーが発生しないようにします。

+0

どこでModコマンドを正確に追加しますか?時間がAMとPM形式である場合、Modが必要でない場合(時間関数はPM形式を読み込み、それに応じて12を追加します)、AMとPMの形式で一致する時刻は – Vbasic4now

+2

@ Vbasic4nowです。私はあなたがそのフォーマットを含まなかったと仮定していた – RGA

+0

@ Vbasic4now - [Mod機能](https://msdn.microsoft.com/en-us/library/ee634767.aspx)と[時間機能](https:// msdn Microsoft.com/ja-jp/library/office/gg264741.aspx)を参照してください。 – Jeeped

1

を高く評価されc.Offset(0, 3)それが値を増加しようとすると、それは「型の不一致」エラーが発生します。更新しようとしているセルにスペースがあってもテキストが含まれていないことを確認してください。

関連する問題