【问题标题】:excel vba range row from variable来自变量的excel vba范围行
【发布时间】:2016-12-02 15:27:52
【问题描述】:

我需要从预设列中获取范围,从变量中获取行。如果我尝试手动获得这个范围,一切正常。如何使用变量获得相同的范围? 我如何获得:

Dim j As Integer
j = 20

MsgBox Union(Sheets("Temp").Range("H10:H20"), _
             Sheets("Temp").Range("K10:K20")).Address

...到这样的事情:(只有它有效?)

MsgBox Union(Sheets("Temp").Range("H10:H" & j ), _
             Sheets("Temp").Range("K10:K" & j)).Address

【问题讨论】:

  • 那段代码有什么问题 - 我觉得没问题?
  • 这对我来说似乎工作正常。你遇到了什么错误?
  • SJR 我为我的家用电脑试用了 MS Office,只是想看看它是否也适用于我……我认为我的工作电脑被诅咒了。 Mark.R 现在我没有错误。但是让我们等到我星期一回去工作。

标签: vba excel range


【解决方案1】:

给你:

Option Explicit

Public Sub TestMe()
    Dim j As Long
    j = 20

    MsgBox Union(Sheets(1).Range("H10:H" & j), _
                 Sheets(1).Range("K10:K" & j)).Address

End Sub

结果:

【讨论】:

  • As long 修复了它还是 Option Explicit 修复了它?现在不能测试。我在家。
  • 好吧,老实说,我认为您的解决方案也很有效。但是在 VBA 中,使用整数根本不是一个好主意。 Option explicit 是一种很好的做法。
  • 在家中试用了 MS Office。我的原始代码在这里对我有用。我不知道工作上有什么问题……周一就会知道。
【解决方案2】:

我认为您要问的是如何将 j (20) 更改为动态变量?如果是这样,这样的事情就可以了:

Option Explicit

Public Sub TestMe()
    Dim j As Long
    j = Range("H10").End(xlDown).Row

    MsgBox Union(Sheets(1).Range("H10:H" & j), _
                 Sheets(1).Range("K10:K" & j)).Address

End Sub

请注意:如果 H 列中有一个空单元格,那么 j 将是紧靠其上方的行 - 解决方法是 j = Range("H" & Columns("H:H").Rows.Count).End(xlUp).Row

【讨论】:

  • 我不希望 j 成为一个范围或其他任何东西。我希望范围基于j。行中的间隙无关紧要。第 j 行也不是最后一行。
  • @InnerBushman 所以你希望用户输入第 j 行而不是硬编码?
  • j 将作为排序结果从其他一些函数中获取。根据用户将采取的一些操作,我的代码将提供一个整数并将其传递给 j 给我的函数。但首先我想编写我的函数并在将其集成到更大的整体之前对其进行测试。
  • 那么你的原始代码应该可以工作 - 我已经更新了我的答案,向你展示了我执行的代码。如果j 的范围是本地而不是全局,我唯一能想到的(如果它来自另一个函数,你需要它。你有没有检查过 j 是否有 any 值?
  • 现在 j 在此函数中声明。我已经在家里试用了 MS Office 测试了我的代码,它可以工作......将检查周一工作的那个是否有问题。我的工作电脑必须受到诅咒,因为我遇到了更多像这样的问题,在其他地方一切正常,但在我的电脑上却不行。 :P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多