Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программка не распознает стринг / 10 сообщений из 10, страница 1 из 1
15.02.2012, 17:42
    #37663567
Szemmel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
Дорогие коллеги. Прошу помочь разобраться..

Есть программка:

Sub LISTO()

Dim m As Variant
Dim tempSN As String

Dim kolvo As Integer

For i = 1 To 100000
If Cells(i, 1) = "" Then
m = m + 1
Exit For

Else
m = m + 1

End If
Next

For i = 2 To m
If Not IsEmpty(Cells(i, 15)) Then
tempSN = Range("i15").Text
'MsgBox TypeName(tempSN)


For j = 1 To Len(tempSN)

If "," = Mid(tempCN, j, 1) Then
MsgBox "OK"
kolvo = kolvo + 1
End If
Next j
MsgBox kolvo

If kolvo > 1 Then

For t = 2 To kolvo
Rows(i).Select
Selection.Insert Shift:=xlDown
Next t
End If
End If

Next

End Sub



Тип данных - стринг.... Железобетонно в ячейках содержатся через запятую символы. Переменная kolvo никогда не выходит из нуля.. В чем может быть дело?

Я пробил на EXACT запятые, это символ код-44, все равно не хочет увеличивать kolvo...


БОльшое спасибо, ребята!
...
Рейтинг: 0 / 0
15.02.2012, 18:01
    #37663631
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
Начнем с оформления кода
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Sub LISTO()

Dim m As Variant
Dim tempSN As String

Dim kolvo As Integer

For i = 1 To 100000
    If Cells(i, 1) = "" Then
        m = m + 1
        Exit For
        
    Else
        m = m + 1
        
    End If
Next

For i = 2 To m
    If Not IsEmpty(Cells(i, 15)) Then
        tempSN = Range("i15").Text
        'MsgBox TypeName(tempSN)
        
       
            For j = 1 To Len(tempSN)

                If "," = Mid(tempCN, j, 1) Then
                MsgBox "OK"
                    kolvo = kolvo + 1
                End If
            Next j
            MsgBox kolvo
            
            If kolvo > 1 Then
            
                For t = 2 To kolvo
                    Rows(i).Select
                    Selection.Insert Shift:=xlDown
                Next t
            End If
    End If

Next

End Sub
...
Рейтинг: 0 / 0
15.02.2012, 18:02
    #37663637
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
SzemmelЕсть программка: ........ В чем может быть дело?
теперь хотелось бы услышать,в чем проблема
...
Рейтинг: 0 / 0
15.02.2012, 18:03
    #37663643
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
А, нашел ошибку
читаем FAQ
...
Рейтинг: 0 / 0
15.02.2012, 18:11
    #37663667
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
как узнать количество запятых в строке без всякого цикла:
Код: vbnet
1.
Count = Len(Str) - Len(Replace(Str, ",", "")
...
Рейтинг: 0 / 0
15.02.2012, 18:12
    #37663671
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
Зачем тут:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
For i = 1 To 100000
    If Cells(i, 1) = "" Then
        m = m + 1
        Exit For
        
    Else
        m = m + 1
        
    End If
Next

нужна переменная m? Она, фактически, дублирует i
...
Рейтинг: 0 / 0
15.02.2012, 18:15
    #37663679
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
Shocker.ProЗачем тут:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
For i = 1 To 100000
    If Cells(i, 1) = "" Then
        m = m + 1
        Exit For
        
    Else
        m = m + 1
        
    End If
Next

нужна переменная m? Она, фактически, дублирует iА в принципе, вместо этого всего можно использовать одну строку:
Код: vbnet
1.
m = Range("A1").End(xlDown).Column
...
Рейтинг: 0 / 0
15.02.2012, 18:16
    #37663681
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
это
Код: vbnet
1.
2.
Rows(i).Select
Selection.Insert Shift:=xlDown

можно заменить на
Код: vbnet
1.
Rows(i).Insert Shift:=xlDown
...
Рейтинг: 0 / 0
15.02.2012, 19:14
    #37663821
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
> Автор: Shocker.Pro
> А, нашел ошибку

Я даже не буду ставить ничего ставить на отсуствие Option Explicit

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.02.2012, 13:00
    #37667015
exp98
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программка не распознает стринг
Наверняка автор уже нашёл, что tempSN и tempCN - разные переменные, потому и 0 всегда.
Код: vbnet
1.
2.
3.
4.
5.
For j = 1 To Len(tempSN)
                If "," = Mid(tempCN, j, 1) Then
                MsgBox "OK"
                    kolvo = kolvo + 1
                End If



И плохая манера, не инициализировать счётчики перед циклом.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программка не распознает стринг / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]