Страница: 1 |
| |
Вопрос: Задача! Защита от дурака.EXCEL VBA
|
Добавлено: 11.03.06 21:12
|
|
Автор вопроса: Василий
|
Есть табличная форма (Бланк заявки)
Запись в бланке можно сделать в любой ячейке
(столбец НАИМЕНОВАНИЕ - 20 строк)
Наименования
Мыло
Порошок
Бумага
Перед в несением данных в базу:
Необходимо чтобы все записи шли масивом без
пустых строк между записями
Т.е. перед внисением в базу они должны
иметь такой вид
Наименования
Мыло
Порошок
Бумага
Задачку решил в лоб через перенос значений на
другой лист, потом возврат в форму и уже из формы
перенос в базу
Работает.Но…
1 Мелькает экран. Непозваляет скрыть лист(Шаблон лист
где сбивается масив). Так как он используется макросом.
2.Заело написал новый макрос но не хватает знаний VBA
Помогите!!!
Заране СПАСИБО.
Sub NewVbasy()
Dim KolZap As Integer
Dim D As Integer
Dim Adrs As Range
Dim rgData As Range
Set rgData = Range("A5:A25")
KolZap = Application.WorksheetFunction.CountA(rgData)
Выбор ячеки для начала цикла
Range("A5").Select
Проверка наличия записей в форме ЗАЯВКА
If KolZap = 0 Then MsgBox "В ЗАЯВКЕ НЕТ ЗАПИСЕЙ! Ввод в базу отменен."
Обход кода если в ЗАЯВКЕ НЕТ записей
If KolZap = 0 Then GoTo Obhod:
Цикл проверяет записи в форме ЗАЯВКА на предмет их последовательности
т.е. записи должны идти одна за другой без пробелов
For D = 1 To KolZap
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Range("A1").Select 'Если активная ячейка
имеет значения тогда переход на ячейку ниже
If ActiveCell <> "" Then GoTo hod: 'Обходим цикл
Else
ActiveCell = ""
Переход по пустым ячекам до заполненной
Do While ActiveCell = ""
ActiveCell.Offset(1, 0).Range("A1").Select
Loop
End If
Set Adrs = ActiveCell
Adrs .Address()
Копирует значения
ActiveCell.Range("A1:C1").Select
Selection.Copy
Range("A5").Select
Ищет пустую ячейку
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Range("A1").Select
Loop
Вставляет значение в пустую ячейку
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Adrs .Address()").Select
Selection.ClearContents
Application.CutCopyMode = False
hod:
Next D
Obhod:
End Sub
Ответить
|
Страница: 1 |
Поиск по форуму