2014-04-18 49 views
3

我想創建一個函數,其中包含一個範圍作爲輸入。 這個範圍是1行?列或1列?行。換句話說,它將是「一維」的 - 橫向或縱向。Excel VBA:確定範圍是水平還是垂直

根據是H還是V,進行一定的計算。 如何確定傳遞的範圍是水平的還是垂直的?

回答

2

如何:

Function RangeIsVertical(rng As Range) As Boolean 
    RangeIsVertical = IIf(rng.Columns.Count = 1, 1, 0) 
End Function 

Sub Test() 
    Debug.Print RangeIsVertical(Range("A1")) //True 
    Debug.Print RangeIsVertical(Range("A1:A10")) //True 
    Debug.Print RangeIsVertical(Range("A1:B2")) //False 
End Sub 
+0

非常好! 感謝Alex – Mierzen

+1

可以縮短爲'RangeIsVertical =(rng.Columns.Count = 1 )' – brettdj

+0

+1好點,有點整潔。 –

1

如果Range.Columns.Count=1那麼它是垂直的。如果Range.Rows.Count=1,它是水平的(假設,如你所說,你只有行或列)。

+0

謝謝! 看起來像一個很棒的方式做到這一點。 然而,我做了測試範圍J34:J37與值 ,做Range.Width和.Height上。它分別返回30和54。不是等於1 :( – Mierzen

+0

這是指像素的寬度和高度 – enderland

+0

你說得對,我已經糾正了它 –