2012-10-29 22 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) 
相关问题