2016-09-15 84 views
0

我想提取範圍值並將其分配給字符串變量。提取範圍值並分配給字符串變量

在下面的圖片中,我想存儲到字符串變量的值是從Range("E10:J11").Value(1,1),它包含字符串「Disputes/Appeals」。

Range values

,我用於執行的代碼是:

Dim P3 As String 

'This line gives me Run-time error '13' 
'Type mismatch 
P3 = Worksheets("NameofmySheet").Range("E10:J11").Value 

有了這個錯誤,我知道我需要特定的.Value的參數,以便我的任務會同意相同的數據類型。

從基於圖像的,繼Range("E10:J11").Value(1,1)規範,這裏是我做過什麼:

'This line gives me Run-Time error '450' 
'Wrong number of arguments or invalid property assignment 
P3 = Worksheets("NameofmySheet").Range("E10:J11").Value(1, 1) 

現在我覺得我在正確的軌道上,但我能不能找出正確的語法或適當的參數對於這種類型的任務。

+0

'P3 =工作表(「Name ofmySheet」)。Range(「E10:J11」)。Cells(1).Value' –

+0

Hi @Tim,此解決方案適用。謝謝。 – kdd

回答

0

你想把(1,1).Value面前:

P3 = Worksheets("NameofmySheet").Range("E10:J11")(1, 1).Value 
+0

該解決方案也適用於@Scott。我從來沒有想過把'(1,1)'放在'.Value'之前。謝謝。我只是想知道爲什麼我找不到這兩個解決方案的任何示例,我將字符串值從一個範圍分配給一個變量字符串的意圖似乎是一個普遍的事情。 – kdd

1

Range.Value返回Variant(這基本上是一個「容器」類型,它可以容納相當多的東西)。如果Range中只有一個單元格,它將包含單元格的基礎內容。如果Range中有多個單元格,它將返回一個2維數組Variant,每個元素包含一個單元格的基礎內容。如果單元格不包含任何內容或導致錯誤的公式,則它還可以返回類型vbEmptyvbError

當你訪問此.Value ...

Worksheets("NameofmySheet").Range("E10:J11").Value 

...你會得到一個二維數組。這就是爲什麼你的屏幕截圖顯示數組索引。

爲什麼代碼...

P3 = Worksheets("NameofmySheet").Range("E10:J11").Value(1, 1) 

...不工作的原因,是.Value實際上是一個索引屬性帶有可選RangeValueDataType參數。所以編譯器會解釋這個索引號爲(1, 1)。由於您傳遞2個「參數」,因此會出現「錯誤的參數數量」錯誤。

儘管其他答案顯示了獲取目標單元格值的不同方法,但要使用屬性返回/數組索引語法將索引應用於.Value的返回值,您需要明確提供一個空參數列表給.Value

P3 = Worksheets("NameofmySheet").Range("E10:J11").Value()(1, 1) 
                 '^^ 

注意,這種語法......

P3 = Worksheets("NameofmySheet").Range("E10:J11")(1, 1).Value 

...代之以給Range參數提供索引,它返回一個單元格Range,它的.Value調用

+0

感謝您回答並進一步解釋'Range.Value'是如何工作的,非常感謝。我確實將所選範圍內的所有單元組合在一起,所以最終它是單個單元格範圍,但我會記住您關於Range如何包含2維數組的教程。 'P3 =工作表(「Name ofmySheet」)。範圍(「E10:J11」)。Value()(1,1)'完美地工作。 – kdd

相關問題