2012-10-29 23 views
0

我試圖顯示從Excel到用戶窗體的文本框選定的單元格範圍內面臨的一個問題,說C1:E14.下面的代碼是給我一個Runtime error '13' Type Mismatch顯示所選單元格範圍在TextBox1中

Private Sub CommandButton1_Click() 
Dim ActSheet As Worksheet 
Dim SelRange As Range 
Set ActSheet = ActiveSheet 
Set SelRange = Selection 
Range("TABLE").Select 
Application.Goto "TABLE" 
UserForm1.TextBox1.Text = Range("C1:E14").Value 
'UserForm1.TextBox1.Text = Range("C1:E14").Select 
End Sub 

如果我使用.Value它給出了上述錯誤,但如果我使用.Select "True"它正在UserForm文本框中打印。

+4

這是一個42個單元格的範圍......你想在文本框中輸入什麼內容?他們全部?分隔/顯示如何? –

+1

類似的問題和討論過去: http://stackoverflow.com/questions/5590963/get-text-from-a-cell-range-in-excel-vba –

+1

概括起來講,你除非將其分配給Variant類型的變量(因爲它是一個數組),否則不能使用包含多個單元格的'Range'對象的'Value'(或'Text')屬性。 –

回答

0

評論無誤。您正嘗試將範圍設置爲字符串。

你可以使用這樣的事情

Public Function Join(seperator As String, rng As Variant) As String 

    Dim cell As Variant 
    Dim joinedString As String 
    For Each cell In rng 
     joinedString = joinedString & cell & seperator 
    Next cell 
    joinedString = Left(joinedString, Len(joinedString) - Len(seperator)) 
    Join = joinedString 

End Function 

把它變成一個範圍內,那麼

UserForm1.TextBox1.Text = Join(",",Range("C1:E14"))

,或者如果你想新的線條勾勒出每個單元的

Dim joinedString as string 
joinedString = Join("|",Range("C1:E14")) 
UserForm1.TextBox1.Text = Replace(joinedString , "|", vbCrLf) 
相關問題