簡體   English   中英

運行時錯誤13:類型不匹配

[英]Run-Time Error 13: Type Mismatch

我在以下宏上收到“運行時錯誤13:類型不匹配”(調試行突出顯示)。 我的目標是檢查第1行是否有大於1的數量,以警告用戶時鍾正在運行,然后退出宏。 第1行中的數字表示用戶已開始一項活動的時鍾,但時鍾一次只能運行一個活動。 我嘗試在第1行中使用“ ON” ...將StartOnRow設置為Text ...但出現相同的錯誤。 非常感謝您的幫助!

Sub StartRunningTimer()
        Dim StartOnRow As Integer
        **StartOnRow = Range("a1:bj1")**
        If StartOnRow > 1 Then
        MsgBox ("Please stop the previously started activity")
        If StartOnRow = True Then Exit Sub
        End If
    Worksheets("TimeElapsed").Activate
    nr = ThisWorkbook.Sheets("TimeElapsed").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(nr, 1) = Format(Now(), "m.d.yy h:mm:ss")
        If Not Started Then
        myTime = Time
        Started = True
    Else
        Worksheets("TimeElapsed").Cells(1, 1).Value = "ON"
        Worksheets("Dashboard").Cells(64, 2).Value = "PRESS IS RUNNING"
        Worksheets("Dashboard").Cells(65, 2).Value = "Time Started:  " & Format(Now(), "hh:MM:ss")
        Worksheets("Dashboard").Cells(74, 2).Value = ""
        Worksheets("Dashboard").Cells(75, 2).Value = ""
        Worksheets("Dashboard").Activate
    End If
End Sub

我認為您需要Set語句:

Set StartOnRow = Range("a1:bj1")

同樣,Range返回一個Range對象,而不是整數:

Dim StartOnRow AS Range
Set StartOnRow = Range("a1:bj1")

如果您要在任何這些單元格中尋找大於一個的值,則只需在BK1中使用一個輔助單元格即可對整個行進行求和。 檢查該單元格StartOnRow = Range("BK1").Value

至於您的問題,@ roryap是正確的。 像這樣使用Range ,您會得到一個對象並需要進行set但是仍然無法獲得所需的對象,因為您需要遍歷范圍然后找到一個值> 1。

Dim StartOnRow as Range
Dim cellCheck as Range

Set StartOnRow = Range("A1:BJ1")

For Each cellCheck in StartOnRow
     if cellCheck.value > 1 Then
          'Stop
          'Exit Sub
     End if
Next cellCheck

暫無
暫無

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

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