选项"严格打开"不允许从 'String' 隐式转换为 '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:MyFolderBook1.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-当我打开选项严格打开时,我遇到错误。

您希望将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

相关内容

最新更新