Private Sub CommandButton1_Click() Dim iPR As Long iPR = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(iPR, 2) = txt_¹ Cells(iPR, 3) = txt_fio Cells(iPR, 4) = txt_email Cells(iPR, 5) = txt_tel With txt_kvalif For i = 0 To .ListCount - 1 If .Selected(i) Then s = s & "," & .List(i) End If Next End With Cells(iPR, 6) = Mid(s, 2) Cells(iPR, 7) = txt_stat Cells(iPR, 8) = txt_cok Cells(iPR, 9) = txt_raspor Unload UserForm1 ThisWorkbook.Save End Sub
Private Sub CommandButton2_Click() 'êîä äëÿ "Ñîõðàíèòü îòðåäàêòèðîâàííûé äàííûå" 'If Edit_Copy = "Edit" Then Cells(ActiveCell.Row, 2) = txt_¹ Cells(ActiveCell.Row, 3) = txt_fio Cells(ActiveCell.Row, 4) = txt_email Cells(ActiveCell.Row, 5) = txt_tel With txt_kvalif For i = 0 To .ListCount - 1 If .Selected(i) Then s = s & "," & .List(i)
End If Next End With Cells(ActiveCell.Row, 6) = Mid(s, 2) Cells(ActiveCell.Row, 7) = txt_stat Cells(ActiveCell.Row, 8) = txt_cok Cells(ActiveCell.Row, 9) = txt_raspor
End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True UserForm1.txt_¹ = CStr(Cells(Selection.Rows.Row, 2).Value) UserForm1.txt_fio = CStr(Cells(Selection.Rows.Row, 3).Value) UserForm1.txt_email = CStr(Cells(Selection.Rows.Row, 4).Value) UserForm1.txt_tel = CStr(Cells(Selection.Rows.Row, 5).Value) Dim arr, i arr = Split(CStr(Cells(Selection.Rows.Row, 6).Value), ",") If IsArray(arr) Then With UserForm1.txt_kvalif For i = 0 To .ListCount - 1 If UBound(Filter(arr, .List(i), , vbTextCompare)) > -1 Then .Selected(i) = True End If Next End With End If UserForm1.txt_stat = CStr(Cells(Selection.Rows.Row, 7).Value) UserForm1.txt_cok = CStr(Cells(Selection.Rows.Row, 8).Value) UserForm1.txt_raspor = CStr(Cells(Selection.Rows.Row, 9).Value) UserForm1.Show vbModeless End Sub
[/vba]
[vba]
Код
Private Sub CommandButton1_Click() Dim iPR As Long iPR = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(iPR, 2) = txt_¹ Cells(iPR, 3) = txt_fio Cells(iPR, 4) = txt_email Cells(iPR, 5) = txt_tel With txt_kvalif For i = 0 To .ListCount - 1 If .Selected(i) Then s = s & "," & .List(i) End If Next End With Cells(iPR, 6) = Mid(s, 2) Cells(iPR, 7) = txt_stat Cells(iPR, 8) = txt_cok Cells(iPR, 9) = txt_raspor Unload UserForm1 ThisWorkbook.Save End Sub
Private Sub CommandButton2_Click() 'êîä äëÿ "Ñîõðàíèòü îòðåäàêòèðîâàííûé äàííûå" 'If Edit_Copy = "Edit" Then Cells(ActiveCell.Row, 2) = txt_¹ Cells(ActiveCell.Row, 3) = txt_fio Cells(ActiveCell.Row, 4) = txt_email Cells(ActiveCell.Row, 5) = txt_tel With txt_kvalif For i = 0 To .ListCount - 1 If .Selected(i) Then s = s & "," & .List(i)
End If Next End With Cells(ActiveCell.Row, 6) = Mid(s, 2) Cells(ActiveCell.Row, 7) = txt_stat Cells(ActiveCell.Row, 8) = txt_cok Cells(ActiveCell.Row, 9) = txt_raspor
End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True UserForm1.txt_¹ = CStr(Cells(Selection.Rows.Row, 2).Value) UserForm1.txt_fio = CStr(Cells(Selection.Rows.Row, 3).Value) UserForm1.txt_email = CStr(Cells(Selection.Rows.Row, 4).Value) UserForm1.txt_tel = CStr(Cells(Selection.Rows.Row, 5).Value) Dim arr, i arr = Split(CStr(Cells(Selection.Rows.Row, 6).Value), ",") If IsArray(arr) Then With UserForm1.txt_kvalif For i = 0 To .ListCount - 1 If UBound(Filter(arr, .List(i), , vbTextCompare)) > -1 Then .Selected(i) = True End If Next End With End If UserForm1.txt_stat = CStr(Cells(Selection.Rows.Row, 7).Value) UserForm1.txt_cok = CStr(Cells(Selection.Rows.Row, 8).Value) UserForm1.txt_raspor = CStr(Cells(Selection.Rows.Row, 9).Value) UserForm1.Show vbModeless End Sub
Variant массив aBase в цикле наполняется одномерными массивами, транспонирование в цикле нужно для того, чтобы, собственно, делать эти массивы одномерными В итоге получаем одномерный массив массивов. Для того, чтобы сделать из него двумерный массив, нужно его транспонировать.
Variant массив aBase в цикле наполняется одномерными массивами, транспонирование в цикле нужно для того, чтобы, собственно, делать эти массивы одномерными В итоге получаем одномерный массив массивов. Для того, чтобы сделать из него двумерный массив, нужно его транспонировать.
Private Sub UserForm_Initialize() 'Событие открытия формы FormLogbook
Set GroupSheet = ThisWorkbook.Worksheets("group") 'Лист group Set DpdSheet = ThisWorkbook.Worksheets("dpd") 'Лист dpd Dim v As Variant, tabl_art As Range v = CStr(DpdSheet.Range("D4").Value): Set tabl_art = GroupSheet.Range("tabl_art") With FormLogbook.Cmb2 .List = GetArr(GroupSheet.Range("tabl_art")) 'Загрузка данны, заполнение списка If tabl_art.Find(v, , xlValues, xlWhole, , , , , False) Is Nothing Then .AddItem v With tabl_art(tabl_art.Rows.Count + 1, 1) .NumberFormat = "@": .Value = v End With End If .Value = v 'Ввод новых данных в поле комбобокса End With End Sub
[/vba] при Style=fmStyleDropDownList(0) свойство Value может принимать только значения, перечисленные в свойстве List
Здравствуйте [vba]
Код
Private Sub UserForm_Initialize() 'Событие открытия формы FormLogbook
Set GroupSheet = ThisWorkbook.Worksheets("group") 'Лист group Set DpdSheet = ThisWorkbook.Worksheets("dpd") 'Лист dpd Dim v As Variant, tabl_art As Range v = CStr(DpdSheet.Range("D4").Value): Set tabl_art = GroupSheet.Range("tabl_art") With FormLogbook.Cmb2 .List = GetArr(GroupSheet.Range("tabl_art")) 'Загрузка данны, заполнение списка If tabl_art.Find(v, , xlValues, xlWhole, , , , , False) Is Nothing Then .AddItem v With tabl_art(tabl_art.Rows.Count + 1, 1) .NumberFormat = "@": .Value = v End With End If .Value = v 'Ввод новых данных в поле комбобокса End With End Sub
[/vba] при Style=fmStyleDropDownList(0) свойство Value может принимать только значения, перечисленные в свойстве Listkrosav4ig
Все операторы действия (заливка, закраска, вставка встрок, удаление ячеек и т.п.) в функции рабочего листа ИГНОРИРУЮТСЯ
Ну зачем же так категорично? У нас есть же Evaluate [vba]
Код
Function ЦВЕТ$(ByRef r As Range, b$, iColor%) Dim s$, s1$ On Error Resume Next If b = "КР" Then iColor = 3 Else iColor = xlNone s = r.Address(, , Application.ReferenceStyle, 1) s1 = Application.Caller.Address(, , Application.ReferenceStyle, 1) Evaluate "Module1.Colorize(" & s & "," & s1 & "," & iColor & ")" DoEvents ЦВЕТ = IIf(r.Interior.ColorIndex = iColor, "ГОТОВО!", "ОШИБКА!") End Function Function Colorize(ByRef r As Range, ByRef r1 As Range, iColor%) On Error Resume Next If Application.Caller.Address <> r1.Address Then r.Interior.ColorIndex = iColor End If End Function
Все операторы действия (заливка, закраска, вставка встрок, удаление ячеек и т.п.) в функции рабочего листа ИГНОРИРУЮТСЯ
Ну зачем же так категорично? У нас есть же Evaluate [vba]
Код
Function ЦВЕТ$(ByRef r As Range, b$, iColor%) Dim s$, s1$ On Error Resume Next If b = "КР" Then iColor = 3 Else iColor = xlNone s = r.Address(, , Application.ReferenceStyle, 1) s1 = Application.Caller.Address(, , Application.ReferenceStyle, 1) Evaluate "Module1.Colorize(" & s & "," & s1 & "," & iColor & ")" DoEvents ЦВЕТ = IIf(r.Interior.ColorIndex = iColor, "ГОТОВО!", "ОШИБКА!") End Function Function Colorize(ByRef r As Range, ByRef r1 As Range, iColor%) On Error Resume Next If Application.Caller.Address <> r1.Address Then r.Interior.ColorIndex = iColor End If End Function
Private Sub Workbook_Open() Dim SName If [type(User!A1)] <> 2 Then Do SName = Application.InputBox("Введите фамилию") If TypeName(SName) = "String" And Not IsNumeric(SName) Then Exit Do SName = False Loop While MsgBox("Повторить ввод?", 4) = 6 If SName = False Then Me.Close False Else With Me.Sheets.Add .Visible = 2: .Name = "User" .[A1] = SName: Me.Save End With End If Else MsgBox [User!A1] End If End Sub
[/vba]Здравствуйте
Здравствуйте [vba]
Код
Private Sub Workbook_Open() Dim SName If [type(User!A1)] <> 2 Then Do SName = Application.InputBox("Введите фамилию") If TypeName(SName) = "String" And Not IsNumeric(SName) Then Exit Do SName = False Loop While MsgBox("Повторить ввод?", 4) = 6 If SName = False Then Me.Close False Else With Me.Sheets.Add .Visible = 2: .Name = "User" .[A1] = SName: Me.Save End With End If Else MsgBox [User!A1] End If End Sub
вариант с помощью надстройки Saparklines for Excel с небольшой доработкой, модули с изменениями прикрепляю, их нужно будет заменить в надстройке (старые удалить, эти перетянуть в проект)
вариант с помощью надстройки Saparklines for Excel с небольшой доработкой, модули с изменениями прикрепляю, их нужно будет заменить в надстройке (старые удалить, эти перетянуть в проект)krosav4ig
Нет, проверка данных работает только с диапазоном, а указать можно только неразрывный диапазон,
а вот и нет! если потанцевать правильный танец с бубном, то можно и уникальные значения в выпадающий список вывести, и собрать выпадающий список из нескольких диапазонов (под выпадающим списком имею ввиду проверка данных->список, если чо) Сергей13, дайте пример файла, а то самому клепать лень очень
Нет, проверка данных работает только с диапазоном, а указать можно только неразрывный диапазон,
а вот и нет! если потанцевать правильный танец с бубном, то можно и уникальные значения в выпадающий список вывести, и собрать выпадающий список из нескольких диапазонов (под выпадающим списком имею ввиду проверка данных->список, если чо) Сергей13, дайте пример файла, а то самому клепать лень очень
let Source = Table.SelectRows(Web.Page(Web.Contents("http://www.eveandersson.com/pi/digits/1000000"))[Data]{0}[Children]{0}{[Name="BODY"]}[Children],each [Name]="TABLE"), fn=(_)=>[Children]{0}?[Children]{0}?[Children]{0}?[Children]{0}?[Children]{0}?[Text]?, Pi = Text.Clean(fn(Table.SelectRows(Source, each fn(_) <> null)){0})&Text.Repeat(" ",498), Digits = Table.FromRows(List.Transform(Splitter.SplitTextByRepeatedLengths(2900)(Pi),Text.ToList),List.Transform({1..2900},Text.From)) in Digits
[/vba] в файле загружено 200 символов, для загрузки остальных обновить запрос
let Source = Table.SelectRows(Web.Page(Web.Contents("http://www.eveandersson.com/pi/digits/1000000"))[Data]{0}[Children]{0}{[Name="BODY"]}[Children],each [Name]="TABLE"), fn=(_)=>[Children]{0}?[Children]{0}?[Children]{0}?[Children]{0}?[Children]{0}?[Text]?, Pi = Text.Clean(fn(Table.SelectRows(Source, each fn(_) <> null)){0})&Text.Repeat(" ",498), Digits = Table.FromRows(List.Transform(Splitter.SplitTextByRepeatedLengths(2900)(Pi),Text.ToList),List.Transform({1..2900},Text.From)) in Digits
[/vba] в файле загружено 200 символов, для загрузки остальных обновить запросkrosav4ig
Private Sub Txb2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 If Len(Txb2) * Txb2.SelStart = 0 Then KeyAscii = 0 Case 49 To 57 Case Else KeyAscii = 0 End Select End Sub
[/vba]
а может так [vba]
Код
Private Sub Txb2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 If Len(Txb2) * Txb2.SelStart = 0 Then KeyAscii = 0 Case 49 To 57 Case Else KeyAscii = 0 End Select End Sub