2016-10-13 33 views
0

我需要在一个文本框中复制一个输入,并将其转换为一个将用作范围的变量。使用下面描述的代码,我正面临错误91对象变量或未设置块变量。如果你有更好的方式来做到这一点,请让我知道。Textbox.value作为变量

Private Sub CommandButton1_Click() 
Dim rng As String 
Dim rangeA As Range 
Dim rangeB As Range 
Dim rangeC As Range 
Dim rangeD As Range 
Dim rangeE As Range 

rng = TextBoxA.Value 

If IsNumeric(RangeboxA.Value) Then 
On Error Resume Next 
Set rangeA = Sheets("Plan1").Range(RangeboxA.Value) 
On Error GoTo 0 
If rangeA Is Nothing Then MsgBox "Range A inválido" 

End If 

rangeA.Select 
Selection.Cut 
rangeA.Offset(0, rng).Select 

    ActiveSheet.Paste 

rng = TextBoxB.Value 


Range("B3:E3").Select 
Selection.Cut 
Range("B3").Offset(0, rng).Select 

    ActiveSheet.Paste 

rng = TextBoxC.Value 


Range("B4:E4").Select 
Selection.Cut 
Range("B4").Offset(0, rng).Select 

    ActiveSheet.Paste 

rng = TextBoxD.Value 


Range("B5:E5").Select 
Selection.Cut 
Range("B5").Offset(0, rng).Select 

    ActiveSheet.Paste 

rng = TextBoxE.Value 


Range("B6:E6").Select 
Selection.Cut 
Range("B6").Offset(0, rng).Select 

    ActiveSheet.Paste 

Me.Hide 
End Sub 
+0

什么将被输入到文本框? – Kyle

回答

0

代码很有趣。首先,我们正在捡起RangeboxA.value

Range()成功利用这一点,它应该是这个样子:

A1:B9 

但这种字符串总是会失败IsNumeric()所以RangeA永远不会SetSelect总是会失败。现在

如果RangeboxA.value具有类似值:

17 

然后Isnumeric()将是真实的,但后来:

Set rangeA = Sheets("Plan1").Range(RangeboxA.Value) 

将失败。

+0

谢谢你的帮助。我改变了isNumeric(),如果不是isNull(),现在它的工作。 – Ygor

+0

@Ygor你很受欢迎。 –