【问题标题】:I cannot identify the 'VBA.Date' code component我无法识别“VBA.Date”代码组件
【发布时间】:2014-01-28 23:05:06
【问题描述】:

我发现了很多代码块,例如包含VBA.Date

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Target.Offset(0, 1).Value = Format(VBA.Date, “MM/DD/YYYY”)
End Sub

或者

Sub YearSheets()
Dim i As Integer
i = 0
Do
Sheets.Add(After:=Sheets(Sheets.Count)).Name = Format(VBA.Date + i, “MM-DD-YYYY”)
i = i + 1
Loop Until i = 365
End Sub

我已经尝试了这些步骤:

  1. 我已按 F1 寻求 VBA 的帮助,但它显示“找不到关键字”。

  2. 搜索了我的 VBA 书籍,但没有人显示某些内容,因为他们认为此类信息不重要或太容易(我猜)。

  3. 我已经尝试用 Google 搜索过 --> 您可以想象这些常用词的组合会发生什么。

  4. 我已在 VBE 窗口中按 F2 并打开对象浏览器
    一世。我搜索了 VBA,我得到了库……不是很亮
    ii.我搜索了 Date 属性,发现它前面是 DateTime 模块,并且在 VBA 库中的资历更高。

    Question-born-from-question:这里有没有可能是VBA库VBA.Date?

令人沮丧的事情发生:一旦我键入 VBE IntelliSense 就会显示日期属性,所以它在我的机器中的某个地方被硬编码。

VBA.Date 究竟是什么——一个对象,一个可以作为对象输入的库?

【问题讨论】:

  • 确保您在进行编程时不会“只见树木不见森林”。
  • 是的!我是个细节狂,我能说什么...?这就是我以最优惠的价格购买最有价值的鸟类的方式:P

标签: excel vba


【解决方案1】:

Date() 和 Time() 是 DateTime 类的属性。在 Excel VBA 中找到。它们是 DataType Variant,使用 Date 时包含当前系统日期,使用 Time 时包含当前系统时间。

它们不需要在 VBA 或 DateTime 之前就可以使用,它们可以简单地与术语日期和时间一起使用。

日期,如果日历是公历,日历属性设置不会改变 Date$ 的行为。如果日历是回历,则 Date$ 返回格式为 mm-dd-yyyy 的 10 个字符的字符串,其中 mm (01-12)、dd (01-30) 和 yyyy (1400-1523) 是回历月、日和年份。等效的公历范围是 1980 年 1 月 1 日到 2099 年 12 月 31 日。

将来获取有关 VBA 语言的特定函数、属性、方法、类和其他成员的信息的最佳方式是使用对象浏览器。

标记的是对象浏览器,点击后会打开这个窗口(也可以按F2来访问)在这个窗口中输入你要搜索的内容

一个你得到结果的滚动并寻找一个更具体的项目:

现在上图中有2个点:

1) At the bottom of the screen it gives basic detail about this item, in this case
   it states that it belongs to the `DateTime` Class, and is a property of that 
   class, and that it is a Variant. 

2) Also in the picture above I have right clicked on the item and selected Help from 
   the context menu, this will bring up even more details about this item.

正如您在此处看到的,Microsoft 已内置支持此项目,并为您提供有关它是什么、它将使用什么数据类型以及它返回什么的详细信息。还有,使用方法和使用时的一些常见注意事项!

【讨论】:

  • 是的,但是 VBA.(something) 在代码中代表什么?...作为一个对象?对不起,我在各种代码块中看到了这个表达式,我一直想知道当我看到它时它是什么意思……我想它有点像个恶习
  • 正如我在回答中所说,它是一个返回变体的函数。不是对象。
  • 为什么VBA.Date 有效?那里有别名吗?
  • @ExoticBirdsMerchant @ExoticBirdsMerchant 其中的VBA 部分是一个库,或者一个DLL,你可以进一步研究这个,但它基本上意味着它是用于其他程序的预先编写的代码,它允许其他引用该库的程序可以访问在该库中开发和编译的所有属性、方法、类和对象。
  • 如果DateDateTime上的一个函数,那为什么VBA.Date会返回当前日期呢?为什么你不需要说DateTime.DateDateTime.Time,或者使用DateTime的实例来调用DateTime
【解决方案2】:

【讨论】:

  • 是的,但是 VBA 组件是一个对象吗?是什么。在您拥有的链接中,我看不到任何带有 VBA 的示例。(某些东西)所以我可以找出它是什么......好吧,我知道我们有对象、属性、函数,请您详细说明您的意思是什么说类型(?)请你告诉我什么是VBA。这里的日期............这一切都称为类型吗作为--->VBA.Date
  • 将它们视为写在 VBA“类”上的“静态”函数,返回 Date 对象或 Time 对象,除了你实际上不必说 VBA.Date (你可以简单地说日期,VBA 会从上下文中找出你的意思是VBA.Date)。
  • 亲爱的罗伯特哈维我可以理解它会给我一个日期对象或时间对象。我也明白它们可以单独作为 Date() 和 Time() 但我真正想弄清楚的是:AS 什么 VBA.(something) 站在代码中..?嗯,我经常在代码块中看到它,而我不知道的东西总是让我不开心所以 VBA 是一门课吗?这是否意味着它是一个对象? (你现在可能已经明白了,清除这一点对我来说有点恶习:P)
  • 是的!但你的答案对我来说更直观!在 VBA 中,一个类在类模块中定义并用作对象的模板,对吗?我想我已经接近了!感谢您非常强大的耐心:P
【解决方案3】:

在您的编辑器工具/参考中,您会看到“Visual Basic For Applications”被选中。我没有任何证据,但我的闲散猜想是这就是你的 VBA.Date (和 VBA,一切)所在的地方。此外,您的 F2 调查向您展示了真相——它在 VBA 模块中。请注意,您可以使用VBA.Date 或仅使用Date,它们是相同的。

简而言之,它被硬编码在工具/参考中提到的那个 DLL 文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2023-01-05
    • 2014-01-16
    • 2017-11-19
    • 1970-01-01
    • 2019-04-20
    • 2022-10-22
    相关资源
    最近更新 更多