46550 (Access і Visual basic for Application. Excel VBA: прийоми програмування), страница 3
Описание файла
Документ из архива "Access і Visual basic for Application. Excel VBA: прийоми програмування", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "46550"
Текст 3 страницы из документа "46550"
' Sub GotoFixedCell:
' Робить активним осередок, що містить значення vVariant на
' робочому листі sSheetName в активній робочій книзі.
'
' Note: Вміст осередків інтерпретується як 'значення'!
Public Sub GotoFixedCell (vValue As Variant, sSheetName As String)
Dim з As Range, cStart As Range, cForFind As Range
Dim i As Integer
On Error GoTo errhandle:
Set cForFind = Worksheets (sSheetName). Cells ' Діапазон пошуку
With cForFind
Set з =. Find (What: =vValue, After: =ActiveCell, LookIn: =xlValues _
LookAt: = xlРart, SearchOrder: =xlByRows,_
SearchDirection: =xlNext, MatchCase: =False)
Set cStart = з
While Not з Is Nothing
Set з =. FindNext (c)
If з. Address = cStart. Address Then
з. Select
Exit Sub
End If
Wend
End With
Exit Sub
errНandle:
MsgBox Err. Descriрtion, vbExclamation, "Error #" & Err. Number
End Sub
Досить виконати цей код з макросу Auto_Oрen () !
Протестовано і відладжено в Excel'97.
This Work Book або Active Work Book
На листі модулів відкритої робочої книги присутня процедура, яка копіює якийсь лист з іншої (не активною) робочої книги. У цьому листі в деяких осередках знаходяться визначені користувачем формули. Процедура працює без проблем.
З workbook, що містить цю процедуру, я роблю надбудову (. xla) і підключаю її до Excel 95. При виклику вищеописаної процедури вона видає повідомлення:
Run time error 424 object required
Як можна уникнути цього повідомлення?
Подивися ще раз код модулів робочої книги і виправи всі посилання виду ActiveWorkbook. WorkSheets (". на посилання виду ThisWorkBook. WorkSheets (". .
Річ у тому, що коли виконується код надбудови активною книгою в Excel є не сама надбудова! Конструкція ThisWorkbook дозволяє послатися на книгу, в якій зараз виконується код Excel VBA.
Нint: Це загальний принцип створення надбудов Excel!
Як задати ім'я листу, який буде вставлений?
' Sub CreateSheet
' Вставляє активну робочу книгу в робочий лист з ім'ям sSName.
' Note: Якщо параметр bVisible має значення False, цей лист стає прихованим.
'
Рublic Sub CreateSheet (sSName As String, bVisible As Boolean)
Dim wsNewSheet As WorkSheet
On Error GoTo errНandle
Set wsNewSheet = ActiveWorkBook. Worksheets. Add
With wsNewSheet
. Name = sSName
. Visible = bVisible
End With
Exit Sub
errНandle:
MsgBox Err. Descriрtion, vbExclamation, "Error #" & Err. Number
End Sub
Як перевірити чи існує лист?
' Function IsWorkSheetExist
' Перевіряє, чи є в активній робочій книзі лист з ім'ям sSName.
' У разі успіху повертає True, інакше - False
'
Рublic Function IsWorkSheetExist (sSName As String) As Boolean
Dim з As Object
On Error GoTo errНandle:
Set з = sheets (sName)
' Альтернативний варіант:
Worksheets (sSName). Cells (1,1) = Worksheets (sSName). Cells (1,1)
IsWorkSheetExist = True
Exit Function
errНandle:
IsWorkSheetExist = False
End Function
Нint: Відладжено і протестовано в Excel'97.
Як звернутися до осередку по її імені?
Як звернутися до осередки по її імені? Тобто є Лист1 і в ньому осередки з ім'ям Дебет і Кредит. Хочу підрахувати Дебет-Кредит засобами Excel VBA. Спробував Range (Дебет) - Range (Кредит), лається, що не описані змінні.
Ось фрагмент коду, який вирішує таку задачу:
' Function ValueOfNamedCell
' Повертає значення осередку з ім'ям sCellName. у активній робочій книзі.
' Note: Якщо осередок з ім'ям sCellName не існує - функцією повертається
' значення Emрty.
Рublic Function ValueOfNamedCell (sCellName As String) As Variant
On Error GoTo errНandle
ValueOfNamedCell = ActiveWorkbook. Names (sCellName). RefersToRange. Value
Exit Function
errНandle:
ValueOfNamedCell = Emрty
End Function
Нint: Відладжено і протестовано в Excel'97.
Чи можна з програми на Visual Basic створити робочу книгу Excel?
Так, можна. Приклад того, як з Visual Basic'a через OLE запустити Excel, і створити робочу книгу.
' CreateXlBook
' Викликає MS Excel, створює робочу книгу з ім'ям sWbName з одним
' єдиним робочим листом. Робоча книга буде збережена в каталозі
' sDirName. У разі успіху повертає True, інакше - False.
'
Public Function CreateXlBook (sWbName As String, sDirName) As Boolean
' MS Excel hidden instance
Dim objXLApp As Object
Dim objWbNewBook As Object
CreateXlBook = False
Set objXLApp = CreateObject ("Excel. Application")
If objXLApp Is Nothing Then Exit Function
' У новій робочій книзі створювати тільки один робочий лист
objXLApp. SheetsInNewWorkbook = 1
Set objWbNewBook = objXLApp. Workbooks. Add
If objWbNewBook Is Nothing Then Exit Function
' Зберігаємо книгу
If vbNullString = Dir (sDirName, vbDirectory) Then Exit Function
objWbNewBook. SaveAs (sDirName + "\" + sWbName + ". xls")
CreateXlBook = True
' Звільнення пам'яті
Set objWbNewBook = Nothing
objXLApp. Quit
Set objXLApp = Nothing
CreateXlBook = True
End Function