簡體   English   中英

Option Strict On 不允許從“String”到“Double”的隱式轉換

[英]Option Strict On disallows implicit conversions from 'String' to 'Double'

1- 創建一個像 C:\\MyFolder\\Book1.xlsx 這樣的 excel 文件。

2- 運行以下代碼並查看代碼運行良好。

Option Strict Off
Imports Microsoft.Office.Interop

Public Class Form1
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    DateTimePicker1.Value = CDate(CStr(System.DateTime.Now.AddDays(-System.DateTime.Now.Day)))

    Dim xlApp As New Excel.Application
    xlApp.WindowState = Excel.XlWindowState.xlMinimized

    Dim wb1 As Excel.Workbook
    wb1 = xlApp.Workbooks.Open("C:\MyFolder\Book1.xlsx")

    Dim ws1 = CType(wb1.Sheets(1), Excel.Worksheet)

    With ws1
        .Range("A1").Value = "2017"
        If .Range("A1").Value.ToString <> CDbl(DateTimePicker1.Value.ToString("yyyy")) Then
            MsgBox("error")
        End If
    End With

End Sub

End Class

5- 當我打開 Option Strict 時出現錯誤。

您想將ws.Range("A1").Value的字符串表示與DateTimePicker1.Value的字符串表示進行比較。

DateTimePicker1.Value轉換為Double似乎很奇怪。 這就是編譯器顯示錯誤的原因,因為代碼

.Range("A1").Value.ToString <> CDbl(DateTimePicker1.Value.ToString("yyyy"))

將嘗試將string類型的值與double類型的值進行比較,這在Strict Option On是不允許的。

只需比較字符串而不轉換為雙精度

If .Range("A1").Value.ToString() <> DateTimePicker1.Value.ToString("yyyy") Then
    MsgBox("error")
End If

暫無
暫無

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

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