Форум программистов, компьютерный форум, киберфорум
MS Office Excel
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
21 / 16 / 5
Регистрация: 22.04.2012
Сообщений: 47
1

Ошибка в VBA Run-time error '9' Subscrpt out of range

12.02.2014, 15:35. Показов 3054. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Этот код даёт ошибку в строке 7. Подскажите, пожалуйста, как можно её исправить? Спасибо.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
For a = 4 To 1200 '37170
    If x Like "*" & Cells(a, 3).Text & "*" Then
        'MsgBox "!"
        i = 3
        c = 7
        Do
            Cells(a + c, 5).Value = Workbooks(x).Sheets(x).Cells(i, 1) ' Ошибка Run-time error '9' Subscrpt out of range
            Cells(a + c, 6).Value = Workbooks(x).Sheets(x).Cells(i, 2)
            b = 3
            For j = 7 To 27
                If j Mod 2 <> 0 Then
                    Cells(a + c, j).Value = Workbooks(x).Sheets(x).Cells(i, b)
                    b = b + 1
                End If
            Next
            i = i + 1
            c = c + 1
        Loop Until Workbooks(x).Sheets(x).Cells(i, 1).Text = ""
    Exit For
    End If
Next
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2014, 15:35
Ответы с готовыми решениями:

run time error 9
при попытке сгенерировать ans-файл, выдает следующую ошибку...как исправить?

Run-time error '13': Type mismatch
Ребята, добрый вечер. Помогите разобраться с ошибкой. Скинул другому человеку, у него работает, у...

Run time error 438 object doesn't support
Ребят помогите пож было всё нормально с файлом, теперь ругается этой ошибкой код просто на...

Ошибка Run-time error 9: subscript out of range. В чем причина?
В VBA не очень шарю, но пришлось написать программу для выставления цен. Появляется ошибка, не могу...

7
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
12.02.2014, 15:45 2
код не виден целиком, а что у Вас в переменной x ?
1
21 / 16 / 5
Регистрация: 22.04.2012
Сообщений: 47
12.02.2014, 15:51  [ТС] 3
Вот код полностью:
переменная х - строковая, остальные - целые

Visual Basic
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Sub AddZNZ()
 
Dim Filter As String, Title As String, Copyto As String
Dim FilterIndex As Integer
Dim Filename As Variant
Dim y As Integer
Dim i, j, b, c, d As Integer
Dim a As Long
Dim x As String
 
' File filters
Filter = "Excel Files (*.xls),*.xls," & _
          "All Files (*.*),*.*"
FilterIndex = 1
Title = "Оберіть файли для додавання"
Filename = Application.GetOpenFilename(Filter, FilterIndex, Title, , True)
 
On Error Resume Next
' Exit on Cancel
 If Filename <> False Then
 Else
  MsgBox "Файли не були обрані!"
  Exit Sub
  End If
On Error GoTo 0
 
For y = 1 To UBound(Filename)
'Open File
Workbooks.Open Filename(y)
x = ActiveWorkbook.Name
 
'копирование информации в цикле
'лист Загальні відомості
Windows("Luganska_obl_rezultati_ZNO.xls").Activate
Sheets("Відомості по територіям").Select
For a = 4 To 1200 '37170
    If x Like "*" & Cells(a, 3).Text & "*" Then
        'MsgBox "!"
        i = 3
        c = 7
        Do
            Cells(a + c, 5).Value = Workbooks(x).Sheets(x).Cells(i, 1)
            Cells(a + c, 6).Value = Workbooks(x).Sheets(x).Cells(i, 2)
            b = 3
            For j = 7 To 27
                If j Mod 2 <> 0 Then
                    Cells(a + c, j).Value = Workbooks(x).Sheets(x).Cells(i, b)
                    b = b + 1
                End If
            Next
            i = i + 1
            c = c + 1
        Loop Until Workbooks(x).Sheets(x).Cells(i, 1).Text = ""
    Exit For
    End If
Next
 
'close book
   Application.DisplayAlerts = False
 Workbooks.Item(Workbooks.Count).Close (False)
 
   Application.DisplayAlerts = True
    Windows("Luganska_obl_rezultati_ZNO.xls").Activate
    Next
 
End
End Sub
0
21 / 16 / 5
Регистрация: 22.04.2012
Сообщений: 47
12.02.2014, 15:55  [ТС] 4
Точно есть книга с именем, сохраненным в Х.

Вот с таким кодом у меня всё работало:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Windows("Luganska_obl_rezultati_ZNO.xls").Activate
Sheets("Відомості по територіям").Select
 
 
 
 
 
i = 11
Do
Cells(i, 1).Value = Workbooks(x).Sheets(x).Cells(i - 8, 1)
Cells(i, 2).Value = Workbooks(x).Sheets(x).Cells(i - 8, 2)
a = 3
For j = 3 To 23
If j Mod 2 <> 0 Then
Cells(i, j).Value = Workbooks(x).Sheets(x).Cells(i - 8, a)
a = a + 1
End If
Next
i = i + 1
Loop Until Workbooks(x).Sheets(x).Cells(i - 8, 1).Text = ""
а когда добавила цикл и немного поменяла номера ячеек, стал выдавать эту ошибку
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
12.02.2014, 17:51 5
Цитата Сообщение от ЕленаБалакирева Посмотреть сообщение
переменная х - строковая, остальные - целые
проверьте в окне Locals, и увидите что i, j, b, c имеют тип Variant. В данном случае это ни на что не влияет
Visual Basic
1
Workbooks(x).Sheets(x)
и что имя книги совпадает с именем листа (sheet) ?
1
21 / 16 / 5
Регистрация: 22.04.2012
Сообщений: 47
12.02.2014, 20:12  [ТС] 6
Точно, спасибо!
Не совпадают, я про расширение забыла. А как мне сделать, чтобы в новую переменную взять то же, что в переменной х, только отбросить последние 4 символа?

Подскажите, пожалуйста, если не сложно. Я в паскале знаю, а в бейсике со строковыми переменными не работала ещё.
0
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
12.02.2014, 22:45 7
Visual Basic
1
Left(x,len(x)-4)
Функция LEFT() выдержка из хелпа
Dim AnyString, MyStr
AnyString = "Hello World" ' Define string.
MyStr = Left(AnyString, 1) ' Returns "H".
MyStr = Left(AnyString, 7) ' Returns "Hello W".
MyStr = Left(AnyString, 20) ' Returns "Hello World".
оставляет некоторое число символов слева
LEN() определяет длину строки (количество символов)
1
21 / 16 / 5
Регистрация: 22.04.2012
Сообщений: 47
13.02.2014, 00:06  [ТС] 8
Спасибо!
0
13.02.2014, 00:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2014, 00:06
Помогаю со студенческими работами здесь

На последней строке выскакивает ошибка: Run-time error '9' Subscript out of range
Есть такой кусок кода (пишу макрос для Corel): Dim Paritet As Variant Dim Bar As Variant ...

Ошибка: "Run-time error '9': Subscript out of range"
Здравствуйте! При многократном нажатии на кнопку вылазит данная ошибка &quot;Run-time error '9':...

Run-time error '9': subscript out of range
выдает вот такую ошибку при нажатии на макрос Run-time error '9': subscript out of range. Sub...

Run-time error '9': Subscript out of range
Выдаёт ошибку Run-time error '9': Subscript out uf range Sub ConstTest() Dim A() As Integer ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru