Имеется файл с таблицей. В таблице условно 10 столбцов. Есть userform, в которой 7 текстбоксов и 10 OptionButton. Задача формы: добавление данных со всех текстбоксов в любые первые пустые ячейки определенного столбца (столбец зависит от выбранного OptionButton от 1 до 10).
С добавлением в пустые ячейки определенного столбца я разобрался:
Скрытый текст
Код
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox1.Value
Exit For
End If
Next
End If
Но я не знаю как сделать так, чтобы данные добавлялись со всех текстбоксов формы (если, конечно, данные присутствуют в текстбоксе).Я догадался просто продублировать код для каждого текстбокса отдельно, и выглядит это вот так:
Скрытый текст
Код
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox1.Value
Exit For
End If
Next
End If
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox2.Value
Exit For
End If
Next
End If
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox3.Value
Exit For
End If
Next
End If
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox4.Value
Exit For
End If
Next
End If
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox5.Value
Exit For
End If
Next
End If
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox6.Value
Exit For
End If
Next
End If
If OptionButton1.Value Then
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Value = TextBox7.Value
Exit For
End If
Next
End If
Это работает, данные не затирают друг-друга, но выходит очень массивно! А ведь опций OptionButton >= 10, и для каждой придется такой массив делать. Уверен, что есть более практичный, умный способ..
Форма открывается по нажатию ctrl+y.
И еще один момент уточнить, как сделать так, чтобы если не выбран столбец, то при нажатии кнопки выдавало бы предупреждение. Написал такой код, но не пойму как добавить туда остальные OptionButton (2,3, 4...), чтобы, выпадало предупреждение, если ничего выбрано:
Скрытый текст
Код
If OptionButton1.Value = "" Then
MsgBox "Выберите столбец", vbExclamation, "Ошибка"
Exit Sub
End If
Есть форма ввода данных. В ней есть TextBox "Кол-во", при заполнении которого выставляется число в ячейку H2 на листе Data. Есть Формула VBA, которая смотрит номер счета на последнем листе в ячейке G4. Прибавляет к этому номеру значение из ячейки H2 листа "Data", и выводит номер в виде XXX (если значение H2 на листе Data = 1) или XXX-XXX (если значение H2 на листе Data >1).
Код
kl = CInt(Right(Sheets(ActiveSheet.Index - 1).Range("G4").Text, 3))
If Worksheets("Data").Range("H2").Value = 1 Then
Range("G4").Value = kl + 1
Else
Range("G4").Value = kl + 1 & "-" & kl + Worksheets("Data").Range("H2").Value
End If
Формулу подсказал TheBestOfTheBest.
Подскажите, пожалуйста, как можно изменить формулу, чтобы она смотрела номер последнего счета в последней строке в таблице сводных данных? Название Листа с таблицей сводных данных= Данные, а номера счетов идут по столбцу B. И, если это возможно, чтобы новый номер прописывался строкой ниже
P.S. Вчера мне посоветовали обратить внимание на этот вариант хранения счетов в электронном виде Заполнение бланков данными из таблицы и я решил им воспользоваться, в связи с этим изменил код формы ввода.
Допустим есть приезд гостей и их размещение. Гостям выставляется счет. Номер счета выставляется в соответствии с количеством приехавших гостей. Например, номер предыдущего счета = 290, приехал один гость, номер его счета будет уже 291. Приехали еще 2 гостя, номер счета уже будет в виде 292-293.
Есть форма ввода данных. В ней есть TextBox "Кол-во", при заполнении которого выставляется число в ячейку A1 на листе Data. Можно ли написать формулу, которая бы брала в расчет номер счета из последнего листа (ячейка G4), прибавляла к номеру число из ячейки A1 на листе Data и выдавала число в том виде, как описано ранее. Т.е. если 1 гость приехал выставляется простой номер в виде XXX, а если 2 и больше, то в виде XXX-XXX.
Подскажите, можно ли сделать макрос, чтобы при выборе определенных галок и нажатии кнопки "Печать" печатались только определенные таблицы на листе? И чтобы на бумаге таблица печаталась именно в том месте, где она находится в файле.
Помогите, пожалуйста, решить проблему. Не считает функция СУММ. Если в столбце Сумма1 или в столбце F (с которого считается Итог) прописать числа ручками, тогда все начинает считать.
Пробовал1: - скопировать пустую ячейку - выделить диапазон с числами - правая кнопка мыши - спецвставка - сложить Работает с числом 295, не работает с числом 1600 (показывает знач!)
Пробовал2: - выделить диапазон числами - ctrl+H - заменить , (запятая) на , (запятая) Работает с числом 295, не работает с числом 1600 (показывает знач!)
Также пробовал вставку и изменение разных форматов в ячейках.
Примечание: В ячейке с суммой 295 - пишет, что другой формат.
Есть 4 таблицы для заполнения и форма ввода данных. Как можно сделать так, чтобы в форме при нажатии "заполнить" шла проверка наличия записи в определенной ячейке (например, Дата) и, если в этой ячейке запись имелась, все заполнение шло бы в следующую таблицу. Если и там есть наличие записи, то уже в третью и т.д. Помогите, пожалуйста, с примером.