Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Функция на Vba, кто знает Vba обязательно загляните
Форум программистов > Системное программирование > Visual Basic
Artexoid
Здравствуйте.

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

Мне нужно полное описание этой функции (что, где происходит). Хот 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...
DIvanmgn
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
Artexoid
Для: DIvanmgn

Большое спасибо.. rolleyes.gif
Tanya
Цитата
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) символов
' затем отбрасываем все левые пробелы
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.