Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель от 31 марта 2023, 13:13

Название: Запись значения textbox в каждый последующий столбец
Отправлено: Посетитель от 31 марта 2023, 13:13
Добрый день. Воткнулся, казалось бы, в простейший случай.
По нажатию на ячейку появляется форма, значение Textbox с этой формы должны записываться в строку активной ячейки, но на "n" ячеек правее. При следующем вызове этой формы, нужно проверить, если эта ячейка уже занята, нужно записать значение из Textbox на 5 ячеек правее. И так далее, каждый раз с шагом в 5 ячеек.
 
Dim st
St = 30
  If Activecell(1, st).Value ="" Then
  ActiveCell(1, st).Value = Textbox2.Value
    Else
    st = st + 5
  End If


Название: От: Запись значения textbox в каждый последующий столбец
Отправлено: Администратор от 31 марта 2023, 14:52
Можно попробовать такой способ, если в активной строке, справа от таблицы нет других данных.
В этом случае макрос может искать в активной строке последний заполненный столбец и относительно него вставит значение.
Название: От: Запись значения textbox в каждый последующий столбец
Отправлено: Посетитель от 31 марта 2023, 15:28
Именно с этого метода и начал, но проблема в том, что ещё правее могут быть данные. Может быть метод Offset(0, 5) может подойти, но пока не получается реализовать.
Название: От: Запись значения textbox в каждый последующий столбец
Отправлено: Администратор от 31 марта 2023, 15:46
Sub Макрос()

    Dim r As Long, c As Long
   
    ' Номер текущей строки.
    r = ActiveCell.Row
   
    ' Поиск пустого столбца.
    For c = 30 To Columns.Count Step 5
        If Cells(r, c).Value = "" Then
            Exit For
        End If
    Next c
   
    ' Запись значения из текстбокса в текущую строку, в пустой столбец.
    Cells(r, c).Value = TextBox2.Value
 
End Sub
Название: От: Запись значения textbox в каждый последующий столбец
Отправлено: Посетитель от 31 марта 2023, 17:36
Спасибо, работает!