簡體   English   中英

Excel宏中的類型不匹配錯誤

[英]Type mismatch error in Excel macro

我有這樣的工作代碼,其目的很簡單:根據我輸入的小時數(E2),填寫常規(A2),加班(B2)和加班OT(C2)的工作時間。

我創建了我的宏,嘗試將正確的代碼加在一起(以后可以根據需要進行更正),現在在突出顯示的代碼行中收到“不匹配錯誤”。 我在網上搜索了幾種不同的資源,但似乎無法弄清我所缺少的內容。 我將單元格E2的值定義為雙精度,並且將測試值(15.7)輸入到適當的單元格(E2)中,但仍然顯示單元格E2沒有值。

任何幫助表示贊賞。

碼

Calculations是工作表對象。

Worksheets(value)傳遞一個字符串值,即工作表的名稱(例如Worksheets("Calculations") )或索引(例如Worksheets(1) ),但不能將其傳遞給工作表對象。

將您對Worksheets(Calculations)所有使用更改為Worksheets("Calculations") (例如Worksheets("Calculations").Range("E2").Value ),或完全繞過Worksheets方法,而只使用Calculations (例如Calculations.Range("E2").Value )。


另請注意, If語句的較早部分被評估為True則不會處理If語句的ElseIf部分。 如果Hours > 8 ,則將執行語句的第一部分,因此,除非Hours <= 8,否則其他任何步驟都不會評估。


您還有一條語句錯誤地使用了And運算符。 And運算符檢查左操作數和右操作數是否均為True ,如果是,則返回True ,否則返回False (例如, If x > 5 And x < 20 Then這樣的語句將是使用它的明智方法。)我相信您正在嘗試使用它來執行兩個語句。 正確的語法是x = 5 : y = 2 ,或者只是將兩個語句放在單獨的行上。


我相信以下將完成您要實現的目標:

Sub Calculate
    With Calculations
        hours = .Range("E2").Value
        If hours <= 8 Then
            .Range("A2").Value = hours
            .Range("B2").Value = 0
            .Range("C2").Value = 0
        ElseIf hours <= 12 Then
            .Range("A2").Value = 8
            .Range("B2").Value = hours - 8
            .Range("C2").Value = 0
        Else
            .Range("A2").Value = 8
            .Range("B2").Value = 4
            .Range("C2").Value = hours - 12
        End If
    End With
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM