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