Мне было интересно, может ли кто-нибудь помочь мне.VBA Кодирование конкретных ячеек для конкретных листов
Я использую приведенный ниже код для копирования данных с одного листа на другой при обнаружении определенных значений ячеек.
Sub Extract()
Dim i As Long, j As Long, m As Long
Dim strProject As String
Dim RDate As Date
Dim RVal As Single
Dim BlnProjExists As Boolean
With Sheets("Enhancements").Range("B3")
For i = 1 To .CurrentRegion.Rows.Count - 1
For j = 0 To 13
.Offset(i, j) = ""
Next j
Next i
End With
With Sheets("AllData").Range("E3")
For i = 1 To .CurrentRegion.Rows.Count - 1
strProject = .Offset(i, 0)
RDate = .Offset(i, 3)
RVal = .Offset(i, 4)
If InStr(.Offset(i, 0), "Enhancements") > 0 Then
strProject = .Offset(i, 0)
ElseIf InStr(.Offset(i, 0), "OVH") > 0 And RVal > 0 Then
strProject = .Offset(i, -1)
Else
GoTo NextLoop
End If
With Sheets("Enhancements").Range("B3")
If .CurrentRegion.Rows.Count = 1 Then
.Offset(1, 0) = strProject
j = 1
Else
BlnProjExists = False
For j = 1 To .CurrentRegion.Rows.Count - 1
If .Offset(j, 0) = strProject Then
BlnProjExists = True
Exit For
End If
Next j
If BlnProjExists = False Then
.Offset(j, 0) = strProject
End If
End If
Select Case Format(RDate, "mmm yy")
Case "Apr 13"
m = 1
Case "May 13"
m = 2
Case "Jun 13"
m = 3
Case "Jul 13"
m = 4
Case "Aug 13"
m = 5
Case "Sep 13"
m = 6
Case "Oct 13"
m = 7
Case "Nov 13"
m = 8
Case "Dec 13"
m = 9
Case "Jan 14"
m = 10
Case "Feb 14"
m = 11
Case "Mar 14"
m = 12
End Select
.Offset(j, m) = .Offset(j, m) + RVal
End With
NextLoop:
Next i
End With
End Sub
код работает, но я пытался адаптировать часть этого сценария, который я с реальными трудностями в делать.
Кусок сценария, который мне нужно изменить, как показано ниже:
If InStr(.Offset(i, 0), "Enhancements") > 0 Then
strProject = .Offset(i, 0)
ElseIf InStr(.Offset(i, 0), "OVH") > 0 And RVal > 0 Then
strProject = .Offset(i, -1)
Else
GoTo NextLoop
End If
With Sheets("Enhancements").Range("B3")
If .CurrentRegion.Rows.Count = 1 Then
.Offset(1, 0) = strProject
j = 1
Else
В его нынешнем формате, если текстовые значения «Расширения» или «OVH» найдены данные копируются и вставить на лист «Улучшения».
Я хотел бы изменить это, поэтому, если текстовое значение «Улучшения» найдено, информация вставляется на страницу «Улучшения», и если текстовое значение «OVH» найдено, информация вставляется в «Накладные расходы». Остальная часть кода может оставаться такой, какая есть.
Как я уже сказал, я попытался внести изменения, но, похоже, я ошибаюсь в ошибках, связанных с использованием утверждений «If», ElseIf и «Else».
Я просто задавался вопросом, может ли кто-нибудь взглянуть на это, пожалуйста, и дайте мне знать, где я ошибаюсь.
Щедрость предлагает «Вопрос широко применяется для широкой аудитории Подробный канонический ответ требуется для решения всех проблем. «. Я считаю, что это неверно. Все, что я вижу здесь, - это VBA, который нуждается в рефакторинге и отладке. – Smandoli
Привет @Smandoli, спасибо, что нашли время, чтобы ответить на мой пост и мои искренние извинения за причинение обиды. Я не уверен, есть ли что-нибудь, что я могу сделать, чтобы изменить щедрость, но не могли бы вы рассказать мне, пожалуйста, можете ли вы помочь? Большое спасибо и добрые пожелания – IRHM