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
Variant массив aBase в цикле наполняется одномерными массивами, транспонирование в цикле нужно для того, чтобы, собственно, делать эти массивы одномерными В итоге получаем одномерный массив массивов. Для того, чтобы сделать из него двумерный массив, нужно его транспонировать.
Variant массив aBase в цикле наполняется одномерными массивами, транспонирование в цикле нужно для того, чтобы, собственно, делать эти массивы одномерными В итоге получаем одномерный массив массивов. Для того, чтобы сделать из него двумерный массив, нужно его транспонировать.
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
Добрый день Функция отправки Xlsx тут функция для создания триггера [vba]
Код
function createTimeDrivenTrigger() { // Trigger every day at 09:00. ScriptApp.newTrigger('send_report_email') .timeBased() .everyDays(1) .atHour(9) .create(); }
[/vba]
Добрый день Функция отправки Xlsx тут функция для создания триггера [vba]
Код
function createTimeDrivenTrigger() { // Trigger every day at 09:00. ScriptApp.newTrigger('send_report_email') .timeBased() .everyDays(1) .atHour(9) .create(); }
Function UsedRng(Optional ByRef r As Range) As Range Set UsedRng = IIf(r Is Nothing, Application.Caller, r).Parent.UsedRange End Function
[/vba] Определение имени ВсеСтроки заменил на
Код
=UsedRng(Лист1!$A$1)
Ошибка была из-за того, что функция UsedRng возвращала использованный диапазон листа, на котором находится ячейка, из которой эта функция вызывается, т.е. ВсеСтроки - диапазон с Лист2, а столбцы с Лист1, а пробел между диапазонами в формуле - оператор пересечения.
заменил UDF [vba]
Код
Function UsedRng(Optional ByRef r As Range) As Range Set UsedRng = IIf(r Is Nothing, Application.Caller, r).Parent.UsedRange End Function
[/vba] Определение имени ВсеСтроки заменил на
Код
=UsedRng(Лист1!$A$1)
Ошибка была из-за того, что функция UsedRng возвращала использованный диапазон листа, на котором находится ячейка, из которой эта функция вызывается, т.е. ВсеСтроки - диапазон с Лист2, а столбцы с Лист1, а пробел между диапазонами в формуле - оператор пересечения.krosav4ig
Private Sub CommandButton1_Click() Call sheetform Unload Me End Sub
Sub test(ByRef arrtest#()) 'Заполняем массив случайными числами из текстбокса ReDim arrtest(1 To Val(Tb1.Text), 1 To 2)
For i = 1 To UBound(arrtest, 1) j = 1 arrtest(i, j) = i ' номер итерации arrtest(i, j + 1) = Round(Tb1.Value * 99 * Rnd, 2) ' случайное число полученное умножением числа введенного в текстбоксе на генератор Next i End Sub
' Выводим данные массива arrtest на новый лист после нажатия кнопки exit
Sub sheetform() Application.ScreenUpdating = False
'Создаем новый лист с помощью объектной переменной (в этом случае новый лист создается строго перед активным листом и нигде больше)
Dim SheetTest As Worksheet Dim Celltest As Range Dim currow As Integer ' переменная для счетчика строк Dim arrtest#() 'массива случайных чисел currow = 1
'вставляем названия ячеек на созданный лист ' Заголовки столбцов SheetTest.Cells(currow, 1) = "№ Периода" SheetTest.Cells(currow, 2) = "Тестовое случайное значение"
test arrtest ' вызываем процедуру заполнения массива arrtest случайными числами
' Заполняем лист данными из массива arrtest, куда мы предварительно внесли все расчетные значения ,ячейки таблицы With SheetTest.Cells(currow + 1, 1).Resize(UBound(arrtest, 1), UBound(arrtest, 2)) .Columns(2).NumberFormat = "#,##0.00" .Value = arrtest End With End Sub
[/vba]
[vba]
Код
Option Explicit
Private Sub CommandButton1_Click() Call sheetform Unload Me End Sub
Sub test(ByRef arrtest#()) 'Заполняем массив случайными числами из текстбокса ReDim arrtest(1 To Val(Tb1.Text), 1 To 2)
For i = 1 To UBound(arrtest, 1) j = 1 arrtest(i, j) = i ' номер итерации arrtest(i, j + 1) = Round(Tb1.Value * 99 * Rnd, 2) ' случайное число полученное умножением числа введенного в текстбоксе на генератор Next i End Sub
' Выводим данные массива arrtest на новый лист после нажатия кнопки exit
Sub sheetform() Application.ScreenUpdating = False
'Создаем новый лист с помощью объектной переменной (в этом случае новый лист создается строго перед активным листом и нигде больше)
Dim SheetTest As Worksheet Dim Celltest As Range Dim currow As Integer ' переменная для счетчика строк Dim arrtest#() 'массива случайных чисел currow = 1
'вставляем названия ячеек на созданный лист ' Заголовки столбцов SheetTest.Cells(currow, 1) = "№ Периода" SheetTest.Cells(currow, 2) = "Тестовое случайное значение"
test arrtest ' вызываем процедуру заполнения массива arrtest случайными числами
' Заполняем лист данными из массива arrtest, куда мы предварительно внесли все расчетные значения ,ячейки таблицы With SheetTest.Cells(currow + 1, 1).Resize(UBound(arrtest, 1), UBound(arrtest, 2)) .Columns(2).NumberFormat = "#,##0.00" .Value = arrtest End With End Sub