我正在尝试使代码无法运行。我想将A类的对象强制转换为B类的对象,但是我遇到了错误。从理论上讲,A是B的一部分,所以我看不出来,为什么它不起作用。
我知道,这种转换确实意味着丢失一些数据,但这正是我想要的。 有什么办法可以使它运行?
Option Explicit
Public oOutlook As Object
Public miCalendario As Object
Public objAppointment As Outlook.AppointmentItem
Private Sub CalExport_Click()
Const olAppointmentItem = 1
Dim OBjapt As Outlook.Namespace
Dim strFolderName As String
Dim OLAppointment As Object
Set OBjapt = oOutlook.GetNamespace("MAPI")
Set Calendar = Session.GetDefaultFolder(olFolderCalendar).Folders("Test")
Set objAppointment = Calendar.items.Add(olAppointmentItem)
Call StartOutlook
B = ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Value
For A = 0 To B
If A = Range("A7").Value Then
A = B
End If
Set OLAppointment.Subject = (ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Offset(X, 2).Value)
SD = ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Offset(X, 3).Value
ST = Format(ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Offset(X, 4).Value, "hh:mm:ss")
SDT = FormatDateTime(SD & " " & ST)
MsgBox SDT
OLAppointment.Start = DateValue(SDT)
ED = ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Offset(X, 5).Value
ET = Format(ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Offset(X, 6).Value, "hh:mm:ss")
EDT = FormatDateTime(ED & " " & ET)
OLAppointment.End = DateValue(EDT)
OLAppointment.Body = (ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Offset(X, 7).Value & vbNewLine & "Expected LAIR: " & ThisWorkbook.Sheets(2).Range("A65536").End(xlUp).Offset(X, 8).Value & "%")
OLAppointment.Save
X = X - 1
Next A
Set OLAppointment = Nothing
End Sub
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以通过多种方式解决此问题,一种是吉拉德·格林(Gilad Green)在其回答中所述的方式,也可以通过实施转换方法来实现:
public static implicit operator A(B b)
{
//your code to convert from B to A
}
public static implicit operator B(A a)
{
//your code to convert from A to B
}
由于B同时实现了IA和IB,因此除非您在此答案中实现类似代码段的内容,否则您就无法直接相互转换。