2015-06-25 42 views
1

我已經將我的代碼剝離,以便找到我的問題。這是從單元格讀取到UserForm上的標籤(PartInformation)。我可以使用字符串進行工作,但是當我更改爲從單元格讀取時,出現「1004應用程序已定義」或「用戶定義的錯誤」錯誤。我甚至用這個來讀取Now()到用戶窗體,並且工作。請幫助我瞭解我哪裏出錯了。感謝您的幫助。如何將值從單元格傳遞給vba6中的用戶窗體標籤

Private Sub OkayCommandButton_Click() 
    Worksheets("Parts List").Select 
    Application.ScreenUpdating = False 
    Range("A2").Select 
    Cells.find(What:="34300TMA010", After:=Range("A2"), LookIn:=xlFormulas, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Activate 
    'this does not work 
    PartInformation = Worksheets("Parts List").Range(ActiveCell) 
    'this works 
    PartInformation = "yes" 
End Sub  

回答

1

看來,ActiveCell不是Range有效的參數。用Range,你正試圖獲得一個單元格,但你可能已經有了ActiveCell。試試這個:

PartInformation = ActiveCell 
+0

你搖滾!!!!太感謝了。不知道爲什麼,但我碰到了這個駝峯。 – jimneely

+0

@jimneely我會進一步解釋,因爲你說你不知道爲什麼這是工作。此代碼等同於PartInformation.Caption = ActiveCell.Value,因爲當您不提供屬性(在本例中爲.Caption和.Value)時,VBA正在使用默認屬性,這恰好就是這兩個屬性。 –

+0

@jimneely另外,你的Cell.Find代碼行最後有一個「.Activate」。這使得找到的單元格「活躍」,ActiveCell是一個簡單的方法來引用該單元格。 –

1

解決方案:這對我的作品。

Private Sub OkayCommandButton_Click() 
    ' ...your other code... 
    UserForm1.PartInformation.Caption = ActiveCell.Value 
End Sub 

enter image description here

說明:包含其可見文本標籤的屬性爲.Caption。所以如果你想改變文本,你需要改變這個屬性,而不僅僅是標籤元素本身。同樣,使用.Value屬性訪問單元格的值。

(順便說一下,ActiveCell是一個應用程序級別的對象,而不是片的水平。因此Sheets("sheet name").ActiveCell將不起作用。Link for details.Range期望的地址,如「$ A $ 12」,但是否指定了小區對象,而不是它的地址,正確的方法可能是PartInformation.Caption = Worksheets("Parts List").Range(ActiveCell.Address).Value

+0

這也適用。到底是什麼......我想我需要做的就是添加地址。太感謝了!! – jimneely

+0

是的,你可以做到這一點,但有點像說「我母親的母親的女兒是我的母親」:-)這就是爲什麼我提出了一個更容易。 ;-) – nhee

相關問題