InStr

Программирование на Visual Basic for Applications
batiq
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 21.01.2005 (Пт) 13:47

InStr

Сообщение batiq » 06.07.2005 (Ср) 12:15

если проверять есть ли string1 в string2, причем, string2 равен "" (пустая строка), то функция InStr возвращает 1.
Как решить эту проблему?.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.07.2005 (Ср) 12:18

Есть строка, в которой ищут, пустая, то возвращается 0.
Если же пустой является строка, которую ищут, то не вижу смысла в такой конструкции.
Lasciate ogni speranza, voi ch'entrate.

batiq
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 21.01.2005 (Пт) 13:47

Сообщение batiq » 06.07.2005 (Ср) 14:08

Sub LogReader()

Dim bsc, t1, t2, r, r1, s, s1, S2
Dim f, v As String
Dim FileNum As Integer
Dim i, j As Integer

FileNum = FreeFile
' fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
' If fileToOpen <> False Then
' Open fileToOpen For Input As FileNum
' bsc = InputBox("Enter BSN Name")
Cells(1, 1) = "bsc"
Cells(2, 1) = bsc
t1 = "01:00"' 'InputBox("Enter begin time:") t2 = InputBox("Enter end time:")
s1 = "Time Stamp: 04 Jul 2005 01:00:03" 'Empty
r1 = Empty
'Line Input #FileNum, s1
'If s1 = "" Then s1 = "skip" '
' В этом месте InStr возвращает ноль; почему?.
Do While InStr(1, t1, s1, 1) 'And Not EOF(FileNum) '
'Line Input #FileNum, s1
'If s1 = "" Then s1 = "skip"
Loop


' Cells(1, 2) = "Time"
' Cells(2, 2) = s1
' i = 1
' Cells(i, 3) = "(53)"
' Do While (InStr(t2, s1, 1) = 0) And Not EOF(FileNum)
' If (InStr(": (53) Number of service upgrades/do wngrades for HSCSD calls", s1) <> 0) Then
' Line Input #FileNum, s1
' Line Input #FileNum, s1
' i = i + 1
' Cells(i, 3) = s1
' If s1 = "" Then s1 = "skip"
' End If
' Loop
' If Not EOF(FileNum) Then Line Input #FileNum, s1
' End If
i = i + 1
Cells(i, 3) = s1
Close (FileNum)

End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.07.2005 (Ср) 14:15

А поменять местами t1 и s1 не пробовал?
INSTR(откуда_ищут, где_ищут, что_ищут)
Lasciate ogni speranza, voi ch'entrate.

batiq
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 21.01.2005 (Пт) 13:47

Сообщение batiq » 06.07.2005 (Ср) 14:50

alibek писал(а):А поменять местами t1 и s1 не пробовал?
INSTR(откуда_ищут, где_ищут, что_ищут)

Крассавчик!. Спасибо..

batiq
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 21.01.2005 (Пт) 13:47

Сообщение batiq » 06.07.2005 (Ср) 15:12

А как вывести содержимое строки с нужной позиции?.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.07.2005 (Ср) 15:16

MID$(текст,откуда_показать,сколько_показать)
Lasciate ogni speranza, voi ch'entrate.

batiq
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 21.01.2005 (Пт) 13:47

Сообщение batiq » 07.07.2005 (Чт) 12:54

alibek писал(а):MID$(текст,откуда_показать,сколько_показать)

Спасибо..

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.07.2005 (Чт) 15:41

В ряде случаев (когда длина заменяемого и конечного текста одинакова) Mid$(Text, Pos, Len) = Text2 работает на порядок быстрее, чем Text = Replace(Text, Text1, Text2). Не говоря уж о том, что не всегда имеется Text1 (в случае таблиц с фиксированной шириной поля).
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

    TopList