2015-10-05 122 views
-1

如何將VBA函數變量中的值返回給Excel 2010中的定義的名稱?如何將Excel VBA變量分配給定義的名稱

在下面的例子中,我想i返回到Excel作爲一個定義的名稱Value_Count可以在其他公式中重複使用,這樣如果MsgBox顯示7,然後在單元格中鍵入=Value_Count也將返回7.

下面的一切都是關於我所嘗試的,以及爲什麼我想要這樣做。如果它不可取,我很樂意知道爲什麼,以及是否有更好的方法。

Function process_control_F(raw_data As Variant) 
Dim i As Integer 
    i = 0 
For Each cell In raw_data 
    i = i + 1 
    Next cell 
MsgBox i 
End Function 

我的目標是讓MsgBox返回的值返回到一個可以在其他論壇中重用的Defined Name。但是,我無法獲得顯示的價值。我已經嘗試了各種形式(太多在這裏回顧,更別說型)類似

Names.Add Name:="Value_Count", RefersTo:=i 

我試圖做到這一點,而不返回一噸的額外的信息細胞,只記得它,因此,希望直接回到一個定義的名字。

我正在使用函數而不是Sub來簡化我的使用,但如果這是問題,我肯定可以更改類型。

我正在創建一個統計控制圖的版本。我期望的最終結果是捕獲一個數據範圍(通常約336個值),並向它們應用一系列控制規則(通過VBA),然後將超出控制參數的任何值返回到可以繪製的定義名稱或否則操縱。

我已經看過(並且有版本)的電子表格,可以實現這一點,數字英畝的幫助列導致圖表和彙總統計。我試圖完成它主要是在VBA的背景下,通過定義名稱調用圖表 - 我只是無法從VBA中獲取值到圖表。

使用函數而不是Sub的興趣是簡化對它的訪問。我寧願不設計一個用戶界面(或使用一個),如果我只需將該功能鍵入單元格並直接訪問結果。然而,正如讓 - 弗朗索瓦科貝特所指出的那樣,這很快就變成了我的目標的一條迂迴路線。不過,我仍然認爲這是值得的,因爲從長遠來看,我有很多重複的分析工作,所以爲了將來節省時間,一些設置時間是值得的。

+0

函數的美妙之處在於,如果你不希望它返回一個單元格,爲什麼使用定義的,而不是變量名返回了自己的價值XD?如果你設置了'process_control_F = i','x = process_control_F'就可以工作 – findwindow

+0

你能澄清一下你想要做什麼嗎?下面的答案看起來像仍然有點混亂。你能否再解釋一下大局,希望我們不會以「[XY問題]」爲結尾(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem )。 – BruceWayne

+0

如果你在一個單元格中鍵入'= Value_Count',怎麼知道'raw_data'輸入應該是爲了計算'i'?您提出的將函數返回值轉換爲定義名稱的方法對我來說毫無意義。我無法幫助。當然有一種方法可以實現你的目標(我仍然不清楚),但肯定不是這樣。 –

回答

2

有了細微的變化,以你的功能,你可以使用它的返回值來完成你想要的東西:

Function process_control_F(raw_data As Variant) As Integer ' <~~ explicit return type 
    Dim i As Integer 
    Dim cell As Variant ' <~~~~ declare variable "cell" 
    i = 0 
    For Each cell In raw_data 
     i = i + 1 
    Next cell 
    process_control_F = i ' <~~~~ returns the value i 
End Function 

然後,您可以使用該函數公式。例如:

enter image description here

+0

感謝您的快速回答。我已經根據你添加的內容清理了代碼(我是新的,並且是用VBA自學的,這是一個危險的組合)。你有什麼想法將價值推動到一個定義的名字?這是我的問題的真正關鍵。非常感謝 – dav

+2

你爲什麼要這麼做?不清楚你想要達到的目標。聽起來你可能試圖以一種非常人爲的方式做點什麼。請編輯您的問題,以準確描述您嘗試通過此方式實現的目標。 –

相關問題