2016-12-02 145 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