Помогите с написанием программы в VBA EXCEL Создать таблицу со следующими реквизитами:...

0 голосов
42 просмотров

Помогите с написанием программы в VBA EXCEL
Создать таблицу со следующими реквизитами: фамилия, адрес, дата, стоимость заказа, сумма аванса, задолженность, вид заказа. В отчете учесть итоговую информацию=задолженность+стоимость-аванс.


Информатика (33 баллов) | 42 просмотров
0

Данные необходимо вводить с помощью формы или нужен просто макрос ?

0

Какой отчет и причем тут вообще VBA?

0

с помощью формы(

0

Зачем в Excel делать какие-то формы, когда листы таблицы гораздо удобнее и уже сами по себе готовый интерфейс, на который VBA ориентирован? Вы с VB не путаете? И потом, все же, что за такой отчет?

Дан 1 ответ
0 голосов
Правильный ответ

'На первом листе внесите данные
'При добавлении записей формулу вычисления задолженности добавлять не надо
'Запускаете макрос - результат (отчет) на втором листе
'На первом листе формулы пересчитывается - результаты обновляются
'Форма в этом случае -излишне
Dim i, j, s, a

Sub Othet ()
Dim info As Variant

'Clear OTHET(2 list)
 Sheets(2).Select
    Range("A1:I1").Select
    With Selection
        .HorizontalAlignment = xlGeneral:        .VerticalAlignment = xlBottom
        .AddIndent = False:        .IndentLevel = 0:   .ShrinkToFit = False:            .MergeCells = True
    End With
    Selection.Font.Bold = True
    With Selection
    End With
Sheets(2).Cells(1, 1) = "ОТЧЕТ"

'Shapka 1 list
Sheets(1).Select
 info = Array("", "фамилия", "адрес", "дата", "стоимость заказа", "сумма аванса", "задолженность", "вид заказа")
For i = 1 To UBound(info)
 Cells(1, i) = info(i)
Next

i = 2
'Расчет долга
While Cells(i, 1) <> ""
  Cells(i, 5) = "=D" + Chr(48 + i) + "-E" + Chr(48 + i)
  i = i + 1
Wend
Rows("1:1").Select
Selection.AutoFilter
a = "" + ">" + InputBox("Укажите задолженность", "", 0) + ""
Selection.AutoFilter field:=5, Criteria1:=a, Operator:=xlAnd
Range("A1:G" + Chr(48 + i) + "").Copy Sheets(2).Range("a2")

Sheets(1).Select
Selection.AutoFilter
End Sub










(846 баллов)