首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Objectname中的变量WITH语句

使用Objectname中的变量WITH语句
EN

Stack Overflow用户
提问于 2019-02-04 09:36:17
回答 2查看 405关注 0票数 1

我有一个excel宏,它从另一个工作表中的特定列读取内容。我想在WITH语句中使用工作表名中的一个变量,但是在每一行中都会得到一个错误消息“在运行时,对象是必需的”。

我已经搜索了如何在对象名称中使用变量,并尝试过,但没有结果。

这段代码起作用

代码语言:javascript
复制
With Blad2
strData = Range(id & "1") & vbLf & vbLf
    For Each c In .Range(id & "2:" & id & "10")
        If c.Value <> "" Then
            strData = strData & " - " & c.Value & vbLf
        End If
    Next c
End With

这个代码失败了。我确信变量bld有一个数值,用MsgBox测试过。

代码语言:javascript
复制
With ("Blad" & bld)
strData = Range(id & "1") & vbLf & vbLf
    For Each c In .Range(id & "2:" & id & "10")
        If c.Value <> "" Then
            strData = strData & " - " & c.Value & vbLf
        End If
    Next c
End With

有什么线索可以让我把这个弄到手吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-04 09:48:40

工作表可以通过以下四种方式来参考:

  • 及其指数;
  • 它的名字在标签上;
  • 它的CodeName (默认情况下与选项卡的名称相同),除非后者被更改;
  • 有一个变量;

不久前,我在这里写下了这个答案-- https://stackoverflow.com/a/52721327/5448626

编写With Blad2时,Blad2是工作表的代号。例如,这里的那个:

因此,它已经是一个变量,Excel可以识别它。另一方面,With ("Blad" & bld)是一个字符串,而不是工作表变量。

要使其工作,使用With Worksheets("Blad" & bld),使用工作表的工作表名称。

票数 3
EN

Stack Overflow用户

发布于 2019-02-04 09:53:44

您正在尝试使用Variable Variable作为SheetCode名称。你不能那样做。为了实现你想要的,试试这个..。

代码语言:javascript
复制
Dim bld As Long: bld = 2
Dim shtCode As String

shtCode = "Blad" & bld

With Sheets(ThisWorkbook.VBProject.VBComponents(shtCode).Properties("Name").Value)
    Debug.Print .Name
End With
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54513348

复制
相关文章

相似问题

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