小编Gee*_*aky的帖子

为什么在使用For Each Next循环之前没有必要设置对象变量?

我正在研究这个简单的宏,但我不明白为什么ws在使用For Each ... Next循环之前没有必要设置用对象引用命名的对象变量.我的逻辑是:

Dim ws As worksheet只需创建内存空间来保存worksheet对象引用.所以到目前为止我担心的是,它是一个空的对象变量.它还没有对象引用.仅指定了其"数据类型".

所以当我们ws在行中引用时For each ws In ActiveWorkbook.Worksheets,是不是ws变量在技术上是空的???? 我们不应该有一些行,ws = ActiveSheet以便变量实际上包含对工作表的对象引用?如此迷茫.

Sub FormatFormulas()
    Dim ws As worksheet
    On Error Resume Next
    For Each ws In ActiveWorkbook.Worksheets
        With ws.Cells.SpecialCells(xlCellTypeFormulas)
            .NumberFormat = ”#,##0”
            .Interior.ColorIndex = 36
            .Font.Bold = True
        End With
    Next ws
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

4
推荐指数
1
解决办法
89
查看次数

Application.Cells VS Application.ActiveSheet.Cells

宏记录器生成以下语句:

Cells.Select
Run Code Online (Sandbox Code Playgroud)

现在我明白,如果没有对象限定符,这将返回所有单元格作为Range对象.

但是,我想知道这个陈述的完全限定版本是什么?

是吗:

  1. Application.Cells.Select
  2. Application.ActiveSheet.Cells
  3. Application.ActiveWorkbook.ActiveSheet.Cells

换句话说,VBE在运行时实际执行了哪一个完全限定的语句Cells.Select

所有这些之间的区别是什么?因为所有这些最终都访问了同一个对象 - 如果我想明确限定所有对象,那么我会使用哪个语句来个人偏好?

非常感谢!

excel vba excel-vba cells vbe

3
推荐指数
1
解决办法
612
查看次数

为什么Visual Basic编辑器将科学记数法转换为#末尾的数字?

我找不到任何关于此的信息:

我正在初始化一个变量,当我输入一个科学记数法的数字,如8.45673E11,但它将它转换为标准形式,最后用复合符号845673000000# - 我想知道这是否应该发生?是否有控制此自动转换的设置?复合符号表示什么?

非常感谢!羊毛

excel vba vbe

3
推荐指数
1
解决办法
161
查看次数

试图理解在Range对象上使用Item属性和Cells属性之间的区别

我明白:

  • Range.Item 返回一个Range对象,该对象表示偏移到指定范围的范围.

  • Range.Cells 返回一个Range对象,该对象表示指定范围内的单元格.

但是,当我读到"Item是Range对象的默认属性"时,会出现混淆.

这让我想问:

Range("A1:D5").Cells(1,1)真正的简化版本 Range("A1:D5").Cells.Item(1,1)

为什么不在Range("A1:D5").Item(1,1)任何情况下使用?

为什么VBA程序员似乎使用该Cells属性来引用范围而不是Item属性?仅仅省略Item默认属性是"最佳实践" Cells吗?

excel vba

1
推荐指数
1
解决办法
77
查看次数

标签 统计

excel ×4

vba ×4

excel-vba ×2

vbe ×2

cells ×1