首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel单元格共享相同的内存地址

Excel单元格共享相同的内存地址
EN

Stack Overflow用户
提问于 2014-10-29 15:21:15
回答 2查看 196关注 0票数 2

我正在使用未公开的函数ObjPtr检查Excel单元格的内存地址。我很惊讶地发现不同的单元可以在内存中共享相同的地址。这说不通。有人能解释一下这件奇怪的事吗?

代码语言:javascript
运行
复制
Sub testobjptr()

Dim objTest As Range
Set objTest = Range("A1")

Dim i As Integer
For i = 1 To 10
    Debug.Print Join(Split(objTest.Address, "$"), "") & " at " & ObjPtr(objTest)
    Set objTest = objTest.Offset(i, i)
Next i

End Sub

下面是“即时”窗口中的输出:

A1为80276608

B2为80276928

D4为80276608

G7为80276928

K11为80276608

P16为80276928

V22为80276608

AC29为80276928

AK37为80276608

AT46为80276928

EN

Stack Overflow用户

发布于 2014-10-29 16:31:11

我很惊讶地发现不同的单元可以在内存中共享相同的地址。

不是的。不同的单元在内存中不共享相同的地址。对象objTest是。每次赋值变量时都会创建一个指针。

尝尝这个。在这里,您将看到所有对象都引用相同的单元,但在内存中被分配了不同的地址。

代码语言:javascript
运行
复制
Sub testobjptr()
    Dim rng1 As Range, rng2 As Range, rng3 As Range, rng4 As Range

    Set rng1 = Range("A1")
    Set rng2 = Range("A1")
    Set rng3 = Range("A1")
    Set rng4 = Range("A1")

    Debug.Print Join(Split(rng1.Address, "$"), "") & " at " & ObjPtr(rng1)
    Debug.Print Join(Split(rng2.Address, "$"), "") & " at " & ObjPtr(rng2)
    Debug.Print Join(Split(rng3.Address, "$"), "") & " at " & ObjPtr(rng3)
    Debug.Print Join(Split(rng4.Address, "$"), "") & " at " & ObjPtr(rng4)
End Sub

输出

代码语言:javascript
运行
复制
A1 at 202834688
A1 at 260111360
A1 at 260111744
A1 at 260091264
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26624715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档