Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 为什么我能够在不限定对象名的情况下执行方法?_Vba - Fatal编程技术网

Vba 为什么我能够在不限定对象名的情况下执行方法?

Vba 为什么我能够在不限定对象名的情况下执行方法?,vba,Vba,今天我正在从excel自动发送Outlook电子邮件,这时我注意到我忘了一行,但不知怎么的,它仍然有效,并且没有出现编译错误。是否有这样的东西作为默认库对象 Sub sendmail() Dim olmsg As Outlook.MailItem 'This works Set olmsg = Outlook.CreateItem(olMailItem) 'What it should be Set olmsg = Outlook.Application.CreateItem End

今天我正在从excel自动发送Outlook电子邮件,这时我注意到我忘了一行,但不知怎么的,它仍然有效,并且没有出现编译错误。是否有这样的东西作为默认库对象

Sub sendmail()

Dim olmsg As Outlook.MailItem

'This works
Set olmsg = Outlook.CreateItem(olMailItem)

'What it should be
Set olmsg = Outlook.Application.CreateItem


End Sub

在Outlook中工作时,它会自动识别Outlook类型。 类似于Excel在不首先表达Excel.Application的情况下识别诸如ActiveSheet和ActiveCell之类的关键字的方式

使用长柄表达式是一种很好的做法,以防在Outlook中工作时需要将类似的代码移植到Excel,并且因为VBA不能很好地处理溢出