Функция на Vba, кто знает Vba обязательно загляните

  • Автор темы Artexoid
  • Дата начала
A

Artexoid

#1
Здравствуйте.

Честно говоря никогда не думал что буду капаться в бейсике. Нужда заставила! В общем к сути…

Мне нужно полное описание этой функции (что, где происходит). Хот VB я не знаю, но общие представления имею, интуитивно, основываясь на знаниях других языков. Но общих представлений все-таки мало т.к. я собираюсь реализовать алгоритм в PHP. Мне нужно знать точный алгоритм описанный здесь.

Если кто может, пожалуйста, опишите, очень нужно!

Заранее огромное спасибо!!!!

Код:
Private Sub FindAnalog()
Dim c1 As Range
Dim i As Integer
Dim r As Range
Dim r1 As Range
Dim Str As String
Dim str1 As String

Worksheets(1).Select
i = ActiveCell.Row
Set SR = ActiveCell

If (i > 7) Then
Str = Range("E" + CStr(i)).Cells(1, 1).Value
If (Str <> "") Then
Str = Split(Str, "/")(0)
str1 = Split(Str, " ")(UBound(Split(Str, " ")))
If Len(str1) < 3 Then Str = LTrim(Left(Str, Len(Str) - Len(str1)))
If (Str <> "") Then
str1 = Split(Str, " ")(0)
If Len(str1) < 3 Then Str = LTrim(Right(Str, Len(Str) - Len(str1)))
End If
If (Str <> "") Then
Str = "*" + Str + "*"
Str = MyReplace(Str, " ", "*")
Worksheets(1).Range("A1:M20000").AutoFilter 5, Str
Worksheets(1).Range("A8:M20000").Sort Range("E8:E20000"), xlAscending
ActiveWindow.ScrollRow = 3
CommandButton2.Caption = "Сбросить фильтр"
End If
End If
End If
End Sub
Скрипт взят из Excel...
 
D

DIvanmgn

#2
Private Sub FindAnalog()
Dim c1 As Range 'объявление переменных
Dim i As Integer 'объявление переменных тип целое число
Dim r As Range 'объявление переменных
Dim r1 As Range 'объявление переменных тип диапазон ячеек (вроде бы.. не уверен)
Dim Str As String 'объявление переменных тип строка
Dim str1 As String 'объявление переменных тип строка

Worksheets(1).Select 'выделяем первый лист в книге
i = ActiveCell.Row 'присваеваем активные (выделенные) строки
Set SR = ActiveCell 'не знаю что за строка

If (i > 7) Then 'если количество активных строк больше 7 то
Str = Range("E" + CStr(i)).Cells(1, 1).Value 'присваиваем значение ячейки из столбца "Е" и строки i
If (Str <> "") Then 'если ячейка не пустая то
Str = Split(Str, "/")(0) ' присваиваем Str все из стр что до знака "/"
str1 = Split(Str, " ")(UBound(Split(Str, " "))) ' присваиваем Str все из стр что до пробела " "
If Len(str1) < 3 Then Str = LTrim(Left(Str, Len(Str) - Len(str1))) 'если длина строки меньше 3 то отщипываем у Str слева длину str1 и отщипанный кусок присваиваем Str
If (Str <> "") Then 'если Str не пустая строка то
str1 = Split(Str, " ")(0) 'присваиваем str1 все из Str что находится ддо пробела " "
If Len(str1) < 3 Then Str = LTrim(Right(Str, Len(Str) - Len(str1))) 'если длина str1 меньше 3 то присваиваем Str левую часть длиной str1
End If
If (Str <> "") Then 'если Str не пустая строка то
Str = "*" + Str + "*" 'добавляем к Str слева и справа по звезде
Str = MyReplace(Str, " ", "*") 'заменяем пробелы звездами
Worksheets(1).Range("A1:M20000").AutoFilter 5, Str 'используем полученное Str в качестве фильтра для диапазона "A1:M20000"
Worksheets(1).Range("A8:M20000").Sort Range("E8:E20000"), xlAscending 'сортируем
ActiveWindow.ScrollRow = 3 'двигаем скрол на нужную позицию
CommandButton2.Caption = "Сбросить фильтр" 'отображаем на кнопке надпись
End If
End If
End If
End Sub
 
T

Tanya

#4
i = ActiveCell.Row 'присваеваем активные (выделенные) строки
' это номер первой выделенной строки

Set SR = ActiveCell 'не знаю что за строка
' назначить переменную-диапазон SR равной выделенной ячейке
' но на самом деле лишняя в этой программе переменная, ни для чего
' как впрочем и с1, r, r1

If (i > 7) Then 'если количество активных строк больше 7 то
' если первая выделенная строка больше 7 (или ниже седьмой строки :) )

str1 = Split(Str, " ")(UBound(Split(Str, " "))) ' присваиваем Str все из стр что до пробела " "
' присваиваем Str1 все из стр что после последнего пробела " "

If Len(str1) < 3 Then Str = LTrim(Left(Str, Len(Str) - Len(str1))) 'если длина строки меньше 3 то отщипываем у Str слева длину str1 и отщипанный кусок присваиваем Str
' и убераем все пробелы слева LTrim

If Len(str1) < 3 Then Str = LTrim(Right(Str, Len(Str) - Len(str1))) 'если длина str1 меньше 3 то присваиваем Str левую часть длиной str1
' если длина str1<3 то
' сначала извлекаем из Str (Len(Str) - Len(Str1) = длина Str - длина str1) символов
' затем отбрасываем все левые пробелы