Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование в Microsoft Office для пользователей
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

Решение:

  • Создайте новый файл Excel, сделайте видимым панель управления Элементы управления, щелкните в нем по элементу управления Кнопка и поместите кнопку на лист Excel. Для наших целей мы будем считать, что созданная кнопка занимает две верхние строки первого листа.
  • На панели инструментов щелкните по кнопке Свойства (созданная нами кнопка должна быть выделена) и настройте для свойства Caption значение Получить данные. Воспользуйтесь свойством Font, чтобы настроить подходящий шрифт для вашей кнопки.
  • Щелкните правой кнопкой мыши по созданной вами кнопке и в контекстном меню выберите Исходный текст. Откроется редактор Visual Basic с курсором ввода на месте события Click для вашей кнопки.
  • В окне редактора кода в меню Tools выберите References и установите флажок напротив строки Microsoft ActiveX Data Objects 2.1 Library.

Код для события Click вашей кнопки Получить данные может быть таким:

Private Sub CommandButton1_Click()

 

Private Sub CommandButton1_Click()

'Вначале — чистим всю книгу от старых данных

Cells.Select

Selection.Clear

 

' Создаем и настраиваем объект Connection

Dim cn As New ADODB.Connection

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Борей.mdb"

cn . Open

 

'Создаем и настраиваем объект Recordset

Dim rs As New ADODB.Recordset

rs.Open"SELECT[КодТовара],[Марка],[Цена],[НаСкладе],[МинимальныйЗапас]," & _ "[ПоставкиПрекращены] FROM Товары", cn

 

'На основе Recordset создаем объект QueryTable и вставляем его, начиная с 4-й строки

Dim QT1 As QueryTable

Set QT1 = QueryTables.Add(rs, Range("A4"))

QT1. Refresh

 

'Определяем количество записей в QueryTable

Dim nRowCount As Integer

Dim oRange As Range

Set oRange = QT1.ResultRange

nRowCount = oRange.Rows.Count

 

'Формируем столбец "Заказать товара, штук"

Range("G4").Value = "Заказать товара, штук"

Range("G4").Font.Bold = True

Range("G4").Columns.AutoFit

 

'Формируем столбец "Стоимость заказа"

Range (" H 4"). Value = "Стоимость заказа"

Range("H4").Font.Bold = True

Range("H4").Columns.AutoFit

 

'Создаем диапазон, который включит в себя столбец G

' "вдоль" QueryTable

Set oRange = Range("G5", "G" & nRowCount + 3)

 

'Готовим переменные, которые нам потребуются в цикле

Dim oCell As Range

Dim sRowNumber As String

Dim cMoney As Currency

Dim cItogMoney As Currency

Dim cItogSklad As Currency

 

'Проходим циклом по всем ячейкам созданного диапазона

For Each oCell In oRange.Cells

'Получаем абсолютный номер строки в виде строковой переменной

sRowNumber = Replace(oCell.Address(True), "$G$", "")

'Проверяем определенные нами условия

If Range("E" & sRowNumber).Value > Range("D" & sRowNumber) And _

Range("F" & sRowNumber).Value = False Then

'Получаем значение для столбца G (заказ в штуках)

oCell.Value = (CInt(Range("E" & sRowNumber).Value) — CInt(Range("D" & sRowNumber).Value))

'Получаем значение для столбца H (стоимость заказа)

cMoney = (CInt(Range("E" & sRowNumber).Value) — CInt(Range("D" & sRowNumber).Value)) * CCur(Range("C" & sRowNumber).Value)

'Записываем его в столбец H

Range("H" & sRowNumber).Value = cMoney

'Сразу плюсуем к итогу в рублях

cItogMoney = cItogMoney + cMoney

End If

 

'И в том же цикле сразу суммируем стоимость товаров на складе

cItogSklad = cItogSklad + (Range("C" & sRowNumber).Value * Range("D" & sRowNumber).Value)

Next

 

'Формируем две строки с итогами

Range("B" & nRowCount + 6). Value = "Общая стоимость товаров на складе:"

Range("B" & nRowCount + 6).Font.Bold = True

Range("B" & nRowCount + 7).Value = "Общая стоимость товаров к заказу:"

Range("B" & nRowCount + 7).Font.Bold = True

Range("D" & nRowCount + 6).Value = cItogSklad

Range("D" & nRowCount + 6).Font.Bold = True

Range("D" & nRowCount + 7).Value = cItogMoney

Range("D" & nRowCount + 7).Font.Bold = True

 

'Для красоты выделяем итоговое значение…

Range("D" & nRowCount + 7). Select

'…и производим скроллирование

Range("D" & nRowCount + 7).Show

 

End Sub

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru