Частые, Очень частые баги форума., В последнее время очень частое такое явления, не считая того что не видно кто на данный момент читает тему. кто в данный моент на данном форуме и так далее...
Кто-то может объяснить почему такое явление в последние времена стало очень частое явление? Где нумерация строк кода? И очень часто в последнее время такое встречается. UPDATE! Смотрим скрины как данный форум ещё может работать. Николай Павлов, к вам вопрос. Почему так форум работает. Вы же этот самый от Майков, неужели Майки такие убогие что (как на данном форуме вашем) не возможно решить мелкие ньюансы, или же всё же играет роль вашего так сказать сво? Вроде бы был серьёзный ресурс кагда-то. И ещё UPDATE! Так что там по Майскому обновления, долго ещё на данном форуме ожидать улучшений? Да, в шапке тоже есть такой же вопрс. Так что Администрация данного сайта ответит?
Доброго времени суток. Есть книга с 4-мя листами. На первом листе макросом во второй колонке (B) вписываются название листов за исключением первого листа:
Код
Option Explicit
Private Sub Workbook_Open()
Dim i As Long
Application.ScreenUpdating = False
ThisWorkbook.Worksheets("Sheet1").Range("B2:B" & ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row).ClearContents
For i = 1 To Sheets.Count
If ThisWorkbook.Sheets(i).Name <> "Sheet1" Then
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Sheet1").Cells(i, 2) = Sheets(i).Name
Application.DisplayAlerts = True
End If
Next
Application.ScreenUpdating = True
End Sub
Далее, при при активации первого листа (или переходе с другого листа) создаются кнопки не ActiveX Control:
Код
Option Explicit
Private Sub Worksheet_Activate()
Dim i As Long, iRow As Long
Dim t As Range
Dim btn As Button
iRow = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
ActiveSheet.Buttons.Delete
For i = 2 To iRow
Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3))
Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
With btn
.OnAction = "btnS" & i
.Caption = ActiveSheet.Cells(i, 2).Text
.Name = "CommandButton" & i
End With
Next i
Application.ScreenUpdating = True
End Sub
Название (Caption) берётся из ячеек колонки B . OnAction макрос который должен активировать лист. Вопрос, как при нажатие на любую из этих кнопок перейти к соответствующему листу взятого из название кнопки ? Знаю что можно отдельно для каждой кнопки написать макрос типа: ThisWorkbook.Worksheets("Sheet2").Activate и так далее... Но планируется наличие свыше 15-ти листов в книге соответственно и кнопок будет такое же количество и писать столько кода для каждой кнопки для активации нужных листов не хочется. Файл пример прикладываю как есть. Спасибо всем!
Доброго времени суток! Помогите пожалуйста найти первую дату (Столбец "H") исключив из поиска те Строки где есть текст (Значение) "В Работе" Результат работы формулы (ДАТУ) вывести в ячейку K13, отметил и выделил её на листе. Спасибо всем кто откликнулся на данный вопрос данной темы! Мира и Здоровья!
Доброго времени суток и с Наступающими! Как правильно выделить строку на листе при выделение строки в ListBox при наличие пустых строк на листе? В ListBox я загрузил данные с листа без пустых строк но вот не правильно выделяет строки на самом и листе. Ниже код формы:
Код
Option Explicit
Private Sub ListBox1_Click()
' 1
Dim sRow As Long, sc As Long
If ListBox1.ListIndex = -1 Then Exit Sub
sc = ListBox1.ListIndex
Me.TextBox1 = ""
If Err.Number = 0 Then
If Me.ListBox1.List(Me.ListBox1.ListIndex, 0) <> "" Then
sRow = ListBox1.ListIndex + 8
ThisWorkbook.Worksheets("Sheet2").Range("A" & sRow & ":S" & sRow).Select
Me.TextBox1.Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
' Me.TextBox2.Value = Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
End If
Else
Err.Clear
MsgBox ("Произошла Ошибка! "), vbCritical
Unload Me
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ThisWorkbook.Worksheets("Sheet1").Activate
Unload Me
End Sub
Private Sub UserForm_Initialize()
ThisWorkbook.Worksheets("Sheet2").Activate
' 1
With ThisWorkbook.Worksheets("Sheet2")
With .Range("B8:B" & .Columns("A").Find(what:="*", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row)
Me.ListBox1.List = .Parent.Evaluate("filter(" & .Address & "," & .Resize(, 1).Address & "<>"""")")
End With
End With
End Sub
и сам файл пример тоже прилагаю. Спасибо всем. Мира и Здоровья!
Доброго времени суток Гуру данного форума! Нужен код vba который проверял бы диапазон имеющихся дат в столбце. Если временной (дата) диапазон в столбце "G" превышают более Двух Лет то удалить самую нижнюю строку чтоб не превышало более Двух лет по дате. Данные с датами заносятся в 9 Строку, всегда предыдущяя запись смещяется вниз. С уважением Николай.
Доброго времени суток вам! Имеется форма с ListBox-м, TextBox-м и CommandButton-м. При инициализации формы в ListBox выводяться данные с листа при наличии скрытой строки. За этот макрос (Иниализации формы) Огромное Спасибо vikttur! При клике на ListBox выводяться данные с первой колонки в TextBox. Столкнулся с проблемой. Редактирую (изменяю) данные в TextBox-е и при нажатие на CommandButton хочу сохранить данные в ячейку в выбранной колонке. Помогите с макросом сохранения - изменения (кнопка Обновить - Изменить) данных при наличии скрытой строки на листе. Спасибо всем кто уделили своего драгоценного времени моей задаче. С уважением Николай.
Доброго времени суток Форумчане! И снова я прошу у вас помощи. Как заполнить ListBox только видимыми строками? К примеру, если строка #5 на листе скрыта то она не должна отображатся в ListBox-е. На данный момент у меня отображаеться только строка #1 и #2 при скрытой строке #5.
Код
Option Explicit
Dim iArr As Variant
Private Sub UserForm_Initialize()
With Worksheets("Sheet1")
iArr = .Range("A2:H" & .Cells(Rows.Count, 8).End(xlUp).SpecialCells(xlCellTypeVisible).Row).Value ' .Row).Value
End With
' отображаем список
Me.ListBox1.List = iArr
Me.ListBox1.ColumnCount = 8
Me.ListBox1.ColumnWidths = "220,180,100,50,50,50,50,50"
End Sub
Показываю 5-ю строку тогда в ListBox-е все строки видны. Строками #2, #3, #4, #6 хочу заполнить ListBox. Спасибо всем кто откликнулся на мой вопрос. С Уважением Николай!
Доброго Времени Суток всем! В очередной раз обращаюсь я к вам за помощью на данный форум. Возможно ли используя один TextBox отредактировать поочерёдно столбцы данными при выборе строки из ListBox-а? Какой код можно применить для следуйщих действий: Запустили форму, выбрали необходимую строку в ListBox-е для редактирования. В TextBox-е ввели данные, нажали на кнопку "NEXT COLUMN >>>", данные вносятся в первый столбец ("A"). Опять ввели данные в TextBox снова нажали на кнопку "NEXT COLUMN >>>", данные вносятся уже во второй столбец ("B"). И так далее до 6-го столбца ("F"), этот столбец будет у нас крайним для редактирования. Момент ещё, если в TextBox-е мы ничего не меняем то при нажатие на кнопку "NEXT COLUMN >>>" ничего не должно изменится и в столбце выбранной строки, тоесть данные остаються Неизменными. Просто проскакиваем через этот столбец. Облазил много форумов и гуглил, ничего похожего я не нашёл. Спасибо всем кто не прошёл мимо данной темы! С Уважением Николай.
Доброго времени суток Форумчане! Прошу Вашей Помощи, что-то вечером голова не соображает. Дана таблица, есть форма ввода через которую вношу данные. На форме 1 комбобокс, 1 текстбокс и кнопка ввода. При выборе значения в комбобоксе и данных в текстбоксе необходимо внести данные в таблицу. Всё вроде-бы Гуд, ничего сложного. Да, данные вносятся но не в тот столбец.
Скрытый текст
Код
Option Explicit
Dim ws1 As Worksheet
Dim tbl As ListObject
Dim NewRow As ListRow
Dim RngCol As Range
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Set ws1 = Sheet1
Set tbl = ws1.ListObjects("Table1")
Set NewRow = tbl.ListRows.Add
With NewRow.Range
Set RngCol = tbl.HeaderRowRange.Find(Me.ComboBox1.Value, , LookIn:=xlValues, LookAt:=xlWhole)
If Not RngCol Is Nothing Then
.Columns(RngCol) = Me.TextBox1
Else
.Columns(RngCol) = ""
End If
End With
Application.ScreenUpdating = True
Unload Me
MsgBox "Данные введены, Удачи!"
End Sub
Private Sub UserForm_Initialize()
Set ws1 = Sheet1
Set tbl = ws1.ListObjects("Table1")
With tbl
Dim myArray() As Variant
myArray = Range("A1:J1")
myArray = WorksheetFunction.Transpose(myArray)
With UserForm1
.ComboBox1.List = myArray
End With
End With
End Sub
Через костыль получается внести данные
Код
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Set ws1 = Sheet1
Set tbl = ws1.ListObjects("Table1")
Set NewRow = tbl.ListRows.Add
With NewRow.Range
Set RngCol = tbl.HeaderRowRange.Find(Me.ComboBox1.Value, , LookIn:=xlValues, LookAt:=xlWhole)
If Not RngCol Is Nothing Then
.Columns(RngCol + 1) = Me.TextBox1
Else
.Columns(RngCol + 1) = ""
End If
End With
Application.ScreenUpdating = True
Unload Me
MsgBox "Данные введены, Удачи!"
End Sub
Ну это же не правильно. Может кто знает правильное решение? Подправьте код Пожалуйста. Спасибо за то что не прошли мимо! Здоровья!
Доброго времени суток Всем! Есть пользовательская форма с тремя Combobox-ми и 2-мя Textbox-ми и есть лист откуда заполняются эти Combobox-ы. Так вот, столкнулся с проблемой такой что не получается вставить сегодняшнюю дату в диапазон после выбора значений из последних двух Combobox-в (строка - столбец). Выдаёт ошибку: Run-time error "13": Type mismatch Помогите Пожалуйста исправить имеющийся код или переделать его. Ячейки куда должна вставляться дата выделены Светло-желтым. Заранее всем спасибо кто не прошел стороной данную тему. Здоровья всем!
Пысы. код под спойлером. Ошибка на 61-й строке.
Скрытый текст
Код
Option Explicit
Dim dt As Date
Public Function ReturnUniqueValue(Rng As Range) As Variant ' функция принимает аргументом диапазон ячеек и возвращает массив уникальных значений
Dim Dict As Object, myArr(), vValue As Variant
Set Dict = CreateObject("Scripting.Dictionary")
myArr = Rng.Value
For Each vValue In myArr
Dict.Item(CStr(vValue)) = 0
Next
ReturnUniqueValue = Dict.Keys
End Function
Private Sub Cancel_Click()
Unload Me
End Sub
Private Sub cbT_Change()
cbU.Clear
If cbT = "ЧастьА" Then
With Me.cbU
.Clear
.List = ReturnUniqueValue(Range("D2:I2"))
End With
End If
If cbT = "ЧастьБ" Then
With Me.cbU
.Clear
.List = ReturnUniqueValue(Range("D10:I10"))
End With
End If
End Sub
Private Sub cbU_Change()
Dim Addr$, arr(), iArr
cbP.Clear
With CreateObject("Scripting.Dictionary"): .CompareMode = vbTextCompare
arr = Range("B3:B7,B11:B15")
If Addr = "" And TypeName(Selection) = "Range" Then Addr = Selection.Address
For Each iArr In arr
If Trim(iArr) <> "" Then .Item(Trim(iArr)) = .Item(Trim(iArr)) + 1
Next
cbP.List = (.Keys)
End With
End Sub
Private Sub Insert_Click() ' Insert Date
dt = DateSerial(Year(Now), Month(Now), Day(Now))
With Sheet2
.Cells(cbP, cbU) = dt
End With
End Sub
Private Sub UserForm_Initialize()
cbT.List = Array("ЧастьА", "ЧастьБ")
' cbP.List = Array("ТекстАБ", "ТекстАВ", "ТекстАГ", "ТекстАД", "ТекстАЕ")
End Sub
Изменено: MikeVol - 21.07.2021 05:58:18(Оформил текст в виде кода. Забыл.)
Доброго времени суток! Никак не могу подружить функцию СУММПРОИЗВ с объединёнными ячейками. Да, знаю что объединённые ячейки это зло но на то есть причины для их использование. В рабочем файле есть код который проставляет данные (приход - расход) по дате. Расход считается а вот приход в интервале между двух дат нет. В файле ячейки закрасил в жёлтый цвет для лучшего восприятия сути вопроса. Пожалуйста, помогите подобрать другую функцию или же эту как-то изменить. Спасибо Всем кто не прошёл мимо и заглянул в данную тему. Пы Сы: в файле примере структура сохранена.
Доброго Времени Суток Гуру Экселя а также и гости данного форума. Прошу помощи у вас. Помогите Пожалуйста доделать или изменить код в пролагаемом файле.
Код
Option Explicit
Sub Find()
Dim fDate As Range, iDate As Variant
Application.ScreenUpdating = False
iDate = Format("mmm-yy")
Set fDate = Sheet1.Columns(2).Find(iDate, , xlFormulas, xlWhole)
If fDate Is Nothing Then
MsgBox iDate & " не найдено", vbExclamation, "Ошибка"
Exit Sub
End If
Sheet1.Activate
fDate.Select
ActiveCell.Offset(0, 1) = ActiveCell.Offset(0, 1) + "Yes"
Application.ScreenUpdating = True
End Sub
Необходимо найти месяц (текущий месяц и год) (без числа) и проставить отметку в соседней (с право) ячейке. Изменял формат даты но к сожалению Без Успехов. Код взят вот из этой темы: Изменение ячейки (дата) в соответствии с нынешней датой Спасибо за это andylu Думал что смогу адаптировать под свои нужды, но увы. Спасибо всем заранее!!! Здоровья и Удачи!!!
Доброго Времени суток всем! Есть таблица на листе и есть форма с двумя combobox-ми и 3-мя textbox-ми.
Для примерного пояснения задачи: выбрали мы в combobox1 название из столбца "C", далее в combobox2 мы выбираем название из строки номер Один (D1:AP1). В textbox1 появляется значение из диапазона (D3:AP38), в textbox2 появляется значение из строки номер Два (D2:AP2) и в textbox3 появляется значение из столбца AQ (AQ3:AQ38). Нужен код для заполнение этих 3-х textbox-в. Как-то так. Спасибо всем кто не прошёл мимо и поможет в решение данной задачи.