Общее·количество·просмотров·страницы

четверг, 12 августа 2010 г.

О нуляхи и сущетвовании

Значит так, господа, давайте разбиремся, что такое ноль, пустой, существут и заполнен...

0 - это ноль, число. [Такое же число, как и любое другое]
"" - это пустая строка. [Такая же строка, как и любая другая]
Null - переменная (ячейка) существует, но значения не имеет
Nothing - переменная (объект) не существует, но существовал когда-то раньше или может существовать в будущем.
Dose Not Exist - переменная не существует, никогда не сущесвовала и не может существовать в будщем.

Для меня, переменная заполнена, если она существует и Not IsNull.

пятница, 6 августа 2010 г.

Вставить данные из одной таблицы в другую по коду товара

Option Base 1
Dim LastColumnI As Integer, LastRowI As Variant
Dim TemplateFullNameS As String, TemplateSheetS As String, TemplateNameS As String
Dim TemplateDataArrV() As Variant, OrderDataArrV() As Variant
Sub Consolidation()
'On Error Resume Next
'открываем щаблон
Set FSO = CreateObject("Scripting.FileSystemObject")
ThisWorkbook.Worksheets("data").Range("a1").Select
TemplateFullNameS = ActiveCell.Offset(0, 1)
Set File = FSO.GetFile(TemplateFullNameS)

TemplateSheetS = ActiveCell.Offset(1, 1)
TemplateNameS = File.Name
Workbooks.Open Filename:=TemplateFullNameS
ActiveWorkbook.Worksheets(CStr(TemplateSheetS)).Range("a1").Select
LastRowI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
LastColumnI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Column
TemplateDataArrV = ActiveCell.CurrentRegion.Offset(1, 0).Resize(LastRowI - 1, LastColumnI)
Workbooks(TemplateNameS).Close
'============================================================================================
TemplateFullNameS = ActiveCell.Offset(2, 1)
TemplateSheetS = ActiveCell.Offset(3, 1)
TemplateNameS = File.Name
Workbooks.Open Filename:=TemplateFullNameS
ActiveWorkbook.Worksheets(CStr(TemplateSheetS)).Range("a1").Select
LastRowI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
LastColumnI = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Column
OrderDataArrV = ActiveCell.CurrentRegion.Offset(1, 0).Resize(LastRowI - 1, LastColumnI)
ActiveWorkbook.Close
a = UBound(OrderDataArrV, 1)
b = UBound(TemplateDataArrV, 1)
c = LBound(TemplateDataArrV, 1)
For i = 1 To a
For j = 1 To b
'For k = 1 To c
If OrderDataArrV(i, 1) = TemplateDataArrV(j, 7) And OrderDataArrV(i, 2) = TemplateDataArrV(j, 8) Then
TemplateDataArrV(j, 2) = OrderDataArrV(i, 1)
End If
'Next c
Next j
Next i
End Sub

ссылка на задчку

среда, 28 июля 2010 г.

Deleting All VBA Code In A Project

Deleting All VBA Code In A Project

This code will delete ALL VBA code in a VBProject.

Sub DeleteAllVBACode()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule

Set VBProj = ActiveWorkbook.VBProject

For Each VBComp In VBProj.VBComponents
If VBComp.Type = vbext_ct_Document Then
Set CodeMod = VBComp.CodeModule
With CodeMod
.DeleteLines 1, .CountOfLines
End With
Else
VBProj.VBComponents.Remove VBComp
End If
Next VBComp
End Sub

четверг, 6 мая 2010 г.

Current Region

Интервал A5:C11 заполнен единицами. Оператор MsgBox Range("A6").CurrentRegion.Row высвечивает
число 5 (номер первой строки интервала)
число 7 (количество строк интервала)
число 11 (номер последней строки интервала
число 6 (номер строки ячейки A6)

попытка присвоить 1 переменной типа Boolean

Переменная Y, описанная как Boolean, в процессе выполнения процедуры получила значение 1. Оператор MsgBox "Y=" & Y
выведет в диалоговое окно Y=1
выведет в диалоговое окно Y=True
выведет в диалоговое окно Y=False
вызовет прерывание программы при попытке вывести значение Y из-за несоответствия типа переменной и ее значения

среда, 5 мая 2010 г.

Правильная инициализация переменной типа Single

21. Процедура предполагает расчет произведения чисел, вводимых пользователем. Для получения произведения описана переменная Prod as Single. В результате вычислений произведение чисел равно нулю. Какая команда инициализации переменных приведет к корректному результату?
Prod="1"
Prod=0
Prod=""
Prod="0"
6. В режиме прерывания после обнаружения ошибки в процедуру добавлен новый оператор, начиная с которого можно было бы продолжить выполнение программы. Для этого необходимо установить внутрь этого оператора точку вставки и
выполнить команду Set Next Statement из меню Debug
выполнить команду Show Next statement из меню Debug
выполнить команду Run to Cursor из меню Debug
невозможно продолжить выполнение программы со вставленного оператора. Необходимо начать заново выполнение программы