Текстовое поле.значение как переменная

#vba #excel

#vba #excel

Вопрос:

Мне нужно скопировать входные данные в текстовое поле и преобразовать их в переменную, которая будет использоваться в качестве диапазона. С помощью кода, описанного ниже, я сталкиваюсь с ошибкой 91 объектной переменной или с неустановленной переменной блока. Если у вас есть лучший способ сделать это, пожалуйста, дайте мне знать.

 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
 

Комментарии:

1. Что будет введено в текстовое поле?

Ответ №1:

Код интересный. Во-первых, мы подбираем RangeboxA.value .

Чтобы успешно использовать это внутри Range() , оно должно выглядеть примерно так:

 A1:B9
 

но этот тип строки всегда будет терпеть неудачу IsNumeric() , поэтому RangeA никогда не получает Set и Select всегда будет терпеть неудачу.

Теперь, если RangeboxA.value имеет значение, подобное:

 17
 

тогда Isnumeric() это будет правдой, но тогда:

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

потерпит неудачу.

Комментарии:

1. Спасибо вам за вашу помощь. Я изменил IsNumeric() на if not isNull(), и теперь он работает.