Я очень новичок в VBA. Я сделал несколько макросов, чтобы ускорить процессы в мастерской, автоматизируя листы мастерских и т. Д., Поэтому извините любой длинный изгиб кода, но это меня сильно озадачивает.Смещение ячейки петли?
У нас есть инструментальный лист для наших машин, и я хочу его автоматизировать, чтобы при вводе 4-значного кода в ячейку, т.е. «1 4 AV», он заполнит различные разделы листов инструментов более подробными описаниями из другой рабочий лист параметра, вот код.
Sub toolsheet()
'START box 1-----------------------------------------
Dim Box1 As String
Dim Box1Array() As String
Box1 = Cells(6, "B").Value
Box1Array = Split(Box1)
'TOOL DESCRIPTION ----------------------------------------
If Box1Array(0) = 1 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G3")
Worksheets(1).Range("B7") = 1
ElseIf Box1Array(0) = 2 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G4")
Worksheets(1).Range("B7") = 2
ElseIf Box1Array(0) = 3 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G5")
Worksheets(1).Range("B7") = 3
ElseIf Box1Array(0) = 4 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G6")
Worksheets(1).Range("B7") = 4
ElseIf Box1Array(0) = 5 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G7")
Worksheets(1).Range("B7") = 5
ElseIf Box1Array(0) = 6 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G8")
Worksheets(1).Range("B7") = 6
ElseIf Box1Array(0) = 7 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G9")
Worksheets(1).Range("B7") = 7
ElseIf Box1Array(0) = 8 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G10")
Worksheets(1).Range("B7") = 8
ElseIf Box1Array(0) = 9 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G11")
Worksheets(1).Range("B7") = 9
ElseIf Box1Array(0) = 10 Then
Worksheets(1).Range("C7") = Worksheets(4).Range("G12")
Worksheets(1).Range("B7") = 10
End If
End Sub
У меня есть 2 проблемы. 1, если в ячейке нет ничего, что он расщепляет, он вызывает ошибку и 2, я хочу повторить этот процесс 16 раз каждый раз, когда 3 ячейки опускаются от последнего на листе 1, но сохраняя одни и те же параметры для чтения на листе 4, I «Пробовал перебирать его со смещением, но еще раз, если в ячейке ничего нет, он вызывает ошибку.
Спасибо за любую помощь
Iain
редактировать:
Спасибо за помощь в настоящее время у меня есть код, выполняющийся до конца и прекрасно работает, но только если я введу информацию отлично.
If Len(Join(Box1Array)) > 0 Then
If Box1Array(1) = 1 Then
Range("I5").Offset(i, 0) = Worksheets(4).Range("B3")
Хотя box1array выше 0 вторая часть раскола не так бросает ошибку снова. я попытался положить,
If Len(Join(Box1Array(1))) > 0 Then
If Box1Array(1) = 1 Then
Range("I5").Offset(i, 0) = Worksheets(4).Range("B3")
Но это не нравится.
Благодаря
Iain
Да, это сработало отлично, теперь я имею весь код работает нормально, хотя, если в расколе есть какая-либо ошибка, если я вхожу только в 1 символ вместо полного 4, то он вызывает ошибку. есть ли в любом случае, чтобы сбросить msgbox и сбросить, если это произойдет, а не просто застрять? –
использовать 'If len (Box1)> 1 then' before split, чтобы избежать этой ошибки, если вы просто хотите разбить, если их больше 1 символа. – newguy