2016-12-02 155 views
0

我需要从预先设置的列和变量的行中获取范围。如果我试图通过手来获得这个范围,一切工作。我如何使用变量获得相同的范围? 如何获得来自:excel vba范围从变量的行

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 
+7

那段代码有什么问题 - 对我来说看起来好吗? – SJR

+0

这似乎对我来说是正确的。你遇到了什么错误? –

+0

SJR我为自己的家用电脑试用了MS Office,看看它是否也适用于我...我认为我的电脑在工作中被诅咒。 Mark.R现在我没有错误。但是,让我们等待,直到我星期一回去工作。 – InnerBushman

回答

0

在这里你去:

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 

结果:

enter image description here

+0

'只要'修复了它或'Option Explicit'?现在不能测试。我在家。 – InnerBushman

+0

嗯,说实话,我认为你的解决方案也可以。但在VBA中,根本不使用整数。选项显式是一种很好的做法。 – Vityata

+0

让我自己在家里试用MS Office。我的原始代码适用于我这里。我不知道在工作上会有什么错误...会在星期一发现。 – InnerBushman

0

我想你问的是如何将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

+0

我不想'j'成为一个范围或其他任何东西。我想在'j'上将范围设置为** **。行中的空白不重要。第j行不是最后一行。 – InnerBushman

+0

@InnerBushman所以你想要用户输入第j行而不是硬编码? – Jeremy

+0

'j'将作为各种结果从其他函数中取出。基于用户将采取的一些行动,我的代码将得到一个整数,并将它传递给我的函数'j'。但是,首先我想编写我的功能并在将其整合到更大的整体之前进行测试。 – InnerBushman