Бит новый для VBA. Итак, простите меня, если это довольно просто. Я делаю форму Excel для регистрации различных компаний.Правильное использование функции смещения и для цикла/while
Мой Excel записывает первую колонку (A) в качестве company_name, где нужно указать свое имя_компании.
Колонка C имеет общее количество. сотрудников в компании. (Это включает постоянных + контрактников).
В колонках D и E есть имена сотрудников, которые являются постоянными.
Итак, предположим; Моя колонка C имеет значение 5; столбец (D и E) может иметь 5 или менее 5 названий сотрудников. (Строго не более 5 Имена сотрудников. Если эти столбцы имеют более 5 имен, они должны выдать сообщение об ошибке в листе2)
Следующий мой столбец F обозначает обозначение. Это может иметь значение между 'менеджера', 'Attender', 'Developer', 'Оператор', 'генеральный директор' только и никакое другое значение не допускается. Эти значения могут повторяться слишком (для разных сотрудников, как в изображении ниже)
Для этого я написал ниже код и он работает отлично.
Dim celadr, celval, celadrI, celvalI, celadrN, celvalN As Variant
Range("F2:F" & LastRow).Select
' Selection.Clearformats
For Each cell In Selection
celadr = cell.Address
celval = cell.Value
celadrI = cell.Offset(0, 4).Address
celvalI = cell.Offset(0, 4).Value
celadrN = cell.Offset(0, 9).Address
celvalN = cell.Offset(0, 9).Value
If Len(celval) >= 1 Then
If InStr(1, ("MANAGER,ATTENDER,DEVELOPER,OPERATOR,CEO,"), Trim(UCase(celval) & ",")) < 1 Then
Range(celadr).Interior.Color = vbRed
Sheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0).Value = celval & " The Designation is incorrect"
strstr = "'" & shname & "'!" & Range(celadr).Address(0, 0)
Sheets("Sheet2").Hyperlinks.Add Anchor:=Sheets("Sheet2").Range("A65536").End(xlUp), Address:="", SubAddress:=strstr
End If
End If
Next
Теперь мое следующее требование; для каждой компании должен быть по крайней мере один «Manager».
Если у определенной компании нет менеджера, тогда я должен предоставить сообщение в «Sheet2» как «Они должны быть по крайней мере одним« Менеджером »для этой компании» со ссылкой на правильные ячейки в листе1.
Я могу проверить его, когда «Менеджер» написан в той же строке, в которой написано имя_компьютера.
Но у меня нет идеи, как это сделать, когда «Менеджер» не написан в той же строке Company_Name.
Ниже приведен мой код, который работает только тогда, когда обозначение - «Менеджер» предполагается записать в той же строке, что и имя_компании.
Range("A2:A" & LastRow).Select
For Each cell In Selection
celadr = cell.Address
celval = cell.Value
If Len(celval) >= 1 Then
If Trim(cell.Offset(i, 5).Value) <> "Manager" Then
cell.Offset(i, 5).Interior.Color = vbRed
Sheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0).Value = celval & "Their should be atleast a single 'Manager' for this company"
strstr = "'" & shname & "'!" & Range(celadr).Address(0, 0)
Sheets("Sheet2").Hyperlinks.Add Anchor:=Sheets("Sheet2").Range("A65536").End(xlUp), Address:="", SubAddress:=strstr
End If
End If
Next
Я попытался написать код, как показано ниже, чтобы проверить, когда «менеджер» написана на другую строку, чем Company_Name.
(я прокомментировал ту часть, которая дает мне ошибку.)
Range("A2:A" & LastRow).Select
' Selection.Clearformats
For Each cell In Selection
celadr = cell.Address
celval = cell.Value
If Len(celval) >= 1 Then
' For i = 0 To cell.Offset(0, 2).Value
If Trim(cell.Offset(i, 5).Value) <> "Manager" Then 'And cell.Offset(1, 0).Value < 1 Then
' Do Nothing
' Else
cell.Offset(i, 5).Interior.Color = vbRed
Sheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0).Value = celval & "Their should be atleast a single 'Manager' for this company"
strstr = "'" & shname & "'!" & Range(celadr).Address(0, 0)
Sheets("Sheet2").Hyperlinks.Add Anchor:=Sheets("Sheet2").Range("A65536").End(xlUp), Address:="", SubAddress:=strstr
End If
' Next i
' If cell.Offset(1, 0).Value >= 1 Then
' End If
End If
Next
Может кто-нибудь наставит меня, как я могу правильно использовать функцию смещения и для петли/время цикла/найти функцию, чтобы проверить каждую компанию по крайней мере, один менеджер?