Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / помогите, плиз, перестроить массив в VBA Excel / 8 сообщений из 8, страница 1 из 1
30.08.2007, 12:43:18
    #34764257
evgenius_b
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
Есть такой массив:
i MyArray(i)1 session duration: 2484 ms.2 session duration: unknown.3 session duration: 1000 ms.

В итоге нужен:
i MyArrayNew(i)1 session duration: 2484 ms.2 session duration: 1000 ms.
...
Рейтинг: 0 / 0
30.08.2007, 14:13:35
    #34764638
evgenius_b
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
Люди добрые, почему не работает то, что я наваял?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub test1()
    Dim MyArray( 1  To  3 ) As String, MyArrayNew() As Variant, MyArrayTemp( 1  To  3 ) As Variant
    MyArray( 1 ) = ", session duration: 2484 ms."
    MyArray( 2 ) = ", session duration: unknown ms."
    MyArray( 3 ) = ", session duration: 1000 ms."
    k =  0 
    ReDim MyArrayNew(k) As Variant
    For i =  1  To  3 

        MyArrayTemp(i) = Application.Index(Split(MyArray(i), " "),  4 )
'        Debug.Print MyArrayTemp(i)
'        Debug.Print MyArrayTemp(i) Like "*unknown*"
        If (MyArrayTemp(i) Like "*unknown*") = False Then
        MyArrayNew(k) = MyArrayTemp(i)
'        Debug.Print MyArrayNew(k)
        k = k +  1 
        Else
        End If

    Next i
End Sub

Затыкается на третьем проходе цикла на строке MyArrayNew(k) = MyArrayTemp(i) с ошибкой Subscript out of range.
Это как понимать?

А есть ли метод элегантней?
...
Рейтинг: 0 / 0
30.08.2007, 14:32:22
    #34764707
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub test1()
    Dim MyArray( 2 ) As String, MyArrayNew() As Variant, MyArrayTemp( 2 ) As Variant
    MyArray( 0 ) = ", session duration: 2484 ms."
    MyArray( 1 ) = ", session duration: unknown ms."
    MyArray( 2 ) = ", session duration: 1000 ms."
    k =  0 
    ReDim MyArrayNew(k) As Variant
    For i =  0  To  2 

        MyArrayTemp(i) = Application.Index(Split(MyArray(i), " "),  4 )
'        Debug.Print MyArrayTemp(i)
'        Debug.Print MyArrayTemp(i) Like "*unknown*"
        If (MyArrayTemp(i) Like "*unknown*") = False Then
        MyArrayNew(k) = MyArrayTemp(i)
'        Debug.Print MyArrayNew(k)
        k = k +  1 
        Else
        End If

    Next i
End Sub
...
Рейтинг: 0 / 0
30.08.2007, 14:32:41
    #34764708
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub test1()
Dim MyArray( 1  To  3 ) As String, MyArrayNew() As Variant
    Dim c As Long, i As Long, strCheck As String
    MyArray( 1 ) = "session duration: 2484 ms."
    MyArray( 2 ) = "session duration: unknown ms."
    MyArray( 3 ) = "session duration: 1000 ms."


    For i =  1  To UBound(MyArray)
        strCheck = Split(MyArray(i), ":")( 1 )
        If Not strCheck Like "*unknown*" Then
            c = c +  1 
            ReDim Preserve MyArrayNew(c)
            MyArrayNew(c) = MyArray(i)
        End If
    Next i
    For i =  1  To UBound(MyArrayNew)
        Debug.Print MyArrayNew(i)
    Next i
End Sub

...
Рейтинг: 0 / 0
30.08.2007, 14:39:02
    #34764745
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
ещё строку
Код: plaintext
        ReDim MyArrayNew(k) As Variant
надо поместить внутрь цикла (т.е. на одну в низ)
...
Рейтинг: 0 / 0
30.08.2007, 15:44:29
    #34765094
evgenius_b
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
магия!
еще раз спасибо.

Сорри за неграмотность. Кодирую недавно. Цейтнот. Одна книжка Уокенбаха и инет.
...
Рейтинг: 0 / 0
30.08.2007, 17:41:45
    #34765642
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
А так, еще проще :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub test1()
    Dim MyArray( 1  To  3 ) As String
    Dim MyNewCollection As New Collection
    Dim s As Variant
    
    MyArray( 1 ) = ", session duration: 2484 ms."
    MyArray( 2 ) = ", session duration: unknown ms."
    MyArray( 3 ) = ", session duration: 1000 ms."
    
    For Each s In MyArray
        If InStr(s, " unknown ") =  0  Then
            MyNewCollection.Add (s)
        End If
    Next
 
 ' ну и выведем результаты чтоб убедиться
    For Each s In MyNewCollection
        Debug.Print s
    Next
End Sub
...
Рейтинг: 0 / 0
31.08.2007, 10:09:22
    #34766730
evgenius_b
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите, плиз, перестроить массив в VBA Excel
2White Owl: если не лишне мое мнение - блеск.
Спасибо, друзья, - выручили.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / помогите, плиз, перестроить массив в VBA Excel / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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