Добрый вечер, многоуважаемые форумчане!!! Прошу Вас, помочь дополнить действующий код 1. Снять защиту листа без запроса пароля 2. Срабатывание действующего макроса 3. Установить защиту листа без запроса пароля Данный код выдает ошибку когда лист запоролен а нужно добавить нового сотрудника Сам код: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
End Sub
[/vba] Заранее спасибо огромнейшее!!!
Добрый вечер, многоуважаемые форумчане!!! Прошу Вас, помочь дополнить действующий код 1. Снять защиту листа без запроса пароля 2. Срабатывание действующего макроса 3. Установить защиту листа без запроса пароля Данный код выдает ошибку когда лист запоролен а нужно добавить нового сотрудника Сам код: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
_Boroda_, не получается я уже чуть ли не через каждый if пытался расставить предложенный Вами код Вот смотрите: Имеется файл в нем листы: Январь; Февраль; Март и т.д. (и лист "Сотрудники") каждый из этих листов запоролен макросом устонавливается на все листы сразу: [vba]
[/vba] На каждом Листе (Январь; Февраль и т.д.) есть столбец где применяется выпадающий список с работой этого макроса: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
End Sub
[/vba] И как сделать так чтоб он перед добавлением вначале снял защиту (чтоб можно было внести нового сотрудника и потом сразу же запоролил) но без запроса самого пароля
_Boroda_, не получается я уже чуть ли не через каждый if пытался расставить предложенный Вами код Вот смотрите: Имеется файл в нем листы: Январь; Февраль; Март и т.д. (и лист "Сотрудники") каждый из этих листов запоролен макросом устонавливается на все листы сразу: [vba]
[/vba] На каждом Листе (Январь; Февраль и т.д.) есть столбец где применяется выпадающий список с работой этого макроса: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
End Sub
[/vba] И как сделать так чтоб он перед добавлением вначале снял защиту (чтоб можно было внести нового сотрудника и потом сразу же запоролил) но без запроса самого пароляlebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Пятница, 13.07.2018, 20:58
И где в ваших попытках Unprotect . Ну хоть в одном месте? [offtop]подвернуласьсовершенно мерзкая кнопка репутация. метился в цитату, попал на неё.[/offtop]
И где в ваших попытках Unprotect . Ну хоть в одном месте? [offtop]подвернуласьсовершенно мерзкая кнопка репутация. метился в цитату, попал на неё.[/offtop]RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Пятница, 13.07.2018, 22:15
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then
Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
Sheets("Сотрудники").Protect password:="09052002"
End Sub
[/vba] Но все равно ошибка (((( вот сами смотрите
RAN, я как понял то вот он [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then
Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
Sheets("Сотрудники").Protect password:="09052002"
End Sub
[/vba] Но все равно ошибка (((( вот сами смотритеlebensvoll
RAN, _Boroda_, все спасибо за посыл разобрался так нужно было [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then
Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
подвернуласьсовершенно мерзкая кнопка репутация. метился в цитату, попал на неё.
Это ВЫ ругаетесь!? Да я ведь только учусь. В начале решения какой то либо проблемы у меня всегда паника, хотя ответ ВОТ перед носом его прям дали "даже разжевали, ГЛОТАЙ". Но увы даже при этом совершаешь ошибки и лишь собравшись с мыслями (и в 1000 раз пробывания) ты находишь И ГЛОТАЕШЬ кусок ЖЕЛАЕМОГО предложенного ЛЮДЬМИ...СПАСИБО ОГРОМНЕЙШЕЕ не огорчайтесь пожалуйста когда ни будь я исправлюсь
RAN, _Boroda_, все спасибо за посыл разобрался так нужно было [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B7:B37")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Сотрудники").Range("Сотрудники"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then
Worksheets("Сотрудники").Range("Сотрудники").Cells(Worksheets("Сотрудники").Range("Сотрудники").Rows.Count + 1, 1) = Target Sheets("Сотрудники").Range("B1:B500").Sort Key1:=Sheets("Сотрудники").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
подвернуласьсовершенно мерзкая кнопка репутация. метился в цитату, попал на неё.
Это ВЫ ругаетесь!? Да я ведь только учусь. В начале решения какой то либо проблемы у меня всегда паника, хотя ответ ВОТ перед носом его прям дали "даже разжевали, ГЛОТАЙ". Но увы даже при этом совершаешь ошибки и лишь собравшись с мыслями (и в 1000 раз пробывания) ты находишь И ГЛОТАЕШЬ кусок ЖЕЛАЕМОГО предложенного ЛЮДЬМИ...СПАСИБО ОГРОМНЕЙШЕЕ не огорчайтесь пожалуйста когда ни будь я исправлюсьlebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Пятница, 13.07.2018, 22:45