Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 5
1

Найти ошибку в коде vba. "Subscript out of range "

13.12.2013, 06:31. Просмотров 899. Ответов 10
Метки нет (Все метки)

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Public line
As Double
Private Sub
UserForm_Initialize()
line = 1
ComboBox1.AddItem
Worksheets("List1").Range("A3")
ComboBox1.AddItem
Worksheets("List1").Range("A4")
ComboBox1.AddItem
Worksheets("List1").Range("A5")
ComboBox1.AddItem
Worksheets("List1").Range("A6")
ComboBox1.AddItem
Worksheets("List1").Range("A7")
ComboBox1.AddItem
Worksheets("List1").Range("A8")
ComboBox1.AddItem
Worksheets("List1").Range("A9")
ComboBox1.AddItem
Worksheets("List1").Range("A10")
End Sub
 
Private Sub
CommandButton1_Click()
If
ComboBox1.Value = Worksheets("List1").Range("A3") Then
per_A = 3
End If
If
ComboBox1.Value = Worksheets("List1").Range("A4") Then
per_A = 4
End If
If
ComboBox1.Value = Worksheets("List1").Range("A5") Then
per_A = 5
End If
If ComboBox1.Value
= Worksheets("List1").Range("A6") Then
per_A = 6
End If
If
ComboBox1.Value = Worksheets("List1").Range("A7") Then
per_A = 7
End If
If
ComboBox1.Value = Worksheets("List1").Range("A8") Then
per_A = 8
End If
If
ComboBox1.Value = Worksheets("List1").Range("A9") Then
per_A = 9
End If
If
ComboBox1.Value = Worksheets("List1").Range("A10") Then
per_A = 10
End If
 
If
OptionButton1.Value = True Then
per_B = 2
End If
If
OptionButton2.Value = True Then
per_B = 3
End If
If
OptionButton3.Value = True Then
per_B = 4
End If
MsgBox
("Стоимость билета составит: "
& Worksheets("List1").Cells(per_A, per_B) & " рублей")
End Sub
 
Private Sub
CommandButton2_Click()
line = line
+ 1
Worksheets("List2").Cells(line,
1) = "Владивосток"
Worksheets("List2").Cells(line,
2) = ComboBox1.Value
Worksheets("List2").Cells(line,
3) = TextBox4.Text
Worksheets("List2").Cells(line,
4) = TextBox5.Text
Worksheets("List2").Cells(line,
5) = TextBox1.Text
Worksheets("List2").Cells(line,
6) = TextBox2.Text
Worksheets("List2").Cells(line,
7) = TextBox3.Text
 
If
ComboBox1.Value = Worksheets("List1").Range("A3") Then
per_A = 3
End If
If
ComboBox1.Value = Worksheets("List1").Range("A4") Then
per_A = 4
End If
If
ComboBox1.Value = Worksheets("List1").Range("A5") Then
per_A = 5
End If
If
ComboBox1.Value = Worksheets("List1").Range("A6") Then
per_A = 6
End If
If
ComboBox1.Value = Worksheets("List1").Range("A7") Then
per_A = 7
End If
If
ComboBox1.Value = Worksheets("List1").Range("A8") Then
per_A = 8
End If
If ComboBox1.Value
= Worksheets("List1").Range("A9") Then
per_A = 9
End If
If
ComboBox1.Value = Worksheets("List1").Range("A10") Then
per_A = 10
End If
 
If
OptionButton1.Value = True Then
per_B = 2
End If
If
OptionButton2.Value = True Then
per_B = 3
End If
If OptionButton3.Value
= True Then
per_B = 4
End If
Worksheets("List2").Cells(line,
8) = Worksheets("List1").Cells(per_A, per_B)
End Sub
Найти ошибку в коде vba. "Subscript out of range "


Найти ошибку в коде vba. "Subscript out of range "


ошибка "Subscript out of range "
Помогите, пожалуйста, исправить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2013, 06:31
Ответы с готовыми решениями:

Исправить ошибку "Subscript out of range" в коде, работающем со сгенерированными листами
Доброго времени суток, товарищи. При "допиливании" одного проекта под свои нужды возник вопрос,...

Исправить ошибку "Subscript out of range" в коде, работающем с жестко заданными объектами
Добрый день! Помогите исправить ошибку в 4 строке. Файл так и назван, лист такой существует....

Исправить ошибку "Subscript out of range" при обращении к рабочей книге
Всем привет. помогите пожалуйста с ошибкой Private Sub CommandButton1_Click() ...

"Subscript out of range" VBA
Хочу,чтобы работал всплывающий список на форме в VBA Excel В списке должны отображаться номера...

10
3795 / 1242 / 335
Регистрация: 07.08.2013
Сообщений: 3,118
13.12.2013, 07:00 2
Приложите файлик
0
es geht mir gut
11208 / 4686 / 1177
Регистрация: 27.07.2011
Сообщений: 11,422
13.12.2013, 07:12 3
Лист1 вместо List1 и будет тебе щастье

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
Public line As Double, per_A As Integer, per_B As Integer
Private Sub UserForm_Initialize()
      line = 1: per_A = 1: per_B = 1
      ComboBox1.AddItem Worksheets("Лист1").Range("A3")
      ComboBox1.AddItem Worksheets("Лист1").Range("A4")
      ComboBox1.AddItem Worksheets("Лист1").Range("A5")
      ComboBox1.AddItem Worksheets("Лист1").Range("A6")
      ComboBox1.AddItem Worksheets("Лист1").Range("A7")
      ComboBox1.AddItem Worksheets("Лист1").Range("A8")
      ComboBox1.AddItem Worksheets("Лист1").Range("A9")
      ComboBox1.AddItem Worksheets("Лист1").Range("A10")
End Sub
 
Private Sub CommandButton1_Click()
     Call ComboValue
     MsgBox ("Стоимость билета составит: " & Worksheets("Лист1").Cells(per_A, per_B) & " рублей")
End Sub
 
Private Sub CommandButton2_Click()
 
    line = line + 1
    Worksheets("Лист2").Cells(line, 1) = "Владивосток"
    Worksheets("Лист2").Cells(line, 2) = ComboBox1.Value
    Worksheets("Лист2").Cells(line, 3) = TextBox4.Text
    Worksheets("Лист2").Cells(line, 4) = TextBox5.Text
    Worksheets("Лист2").Cells(line, 5) = TextBox1.Text
    Worksheets("Лист2").Cells(line, 6) = TextBox2.Text
    Worksheets("Лист2").Cells(line, 7) = TextBox3.Text
 
    Call ComboValue
    Worksheets("Лист2").Cells(line, 8) = Worksheets("Лист1").Cells(per_A, per_B)
End Sub
 
Private Sub ComboValue()
 
    Select Case ComboBox1.Value
          Case Worksheets("Лист1").Range("A3"):  per_A = 3
          Case Worksheets("Лист1").Range("A4"):  per_A = 4
          Case Worksheets("Лист1").Range("A5"):  per_A = 5
          Case Worksheets("Лист1").Range("A6"):  per_A = 6
          Case Worksheets("Лист1").Range("A7"):  per_A = 7
          Case Worksheets("Лист1").Range("A8"):  per_A = 8
          Case Worksheets("Лист1").Range("A9"):  per_A = 9
          Case Worksheets("Лист1").Range("A10"): per_A = 10
    End Select
    
    Select Case True
           Case OptionButton1.Value: per_B = 2
           Case OptionButton2.Value: per_B = 3
           Case OptionButton3.Value: per_B = 4
    End Select
    
End Sub
1
3795 / 1242 / 335
Регистрация: 07.08.2013
Сообщений: 3,118
13.12.2013, 07:45 4
тоже приложу руку

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
Public line As Double
Public per_A As Integer
Public per_B As Integer
 
Private Sub UserForm_Initialize()
line = 1
For i = 3 To 10
ComboBox1.AddItem Worksheets("Лист1").Range("A" & i)
Next i
End Sub
 
Private Sub CommandButton1_Click()
Call iper_AB
MsgBox "Стоимость билета составит: : " & Worksheets("Лист1").Cells(per_A, per_B) & " рублей"
End Sub
 
Private Sub CommandButton2_Click()
line = line + 1
For i = 1 To 7
Worksheets("Лист2").Cells(line, i) = Choose(i, "Владивосток", ComboBox1.Value, TextBox4.Text, TextBox5.Text, TextBox1.Text, TextBox2.Text, TextBox3.Text)
Next i
Call iper_AB
Worksheets("Лист2").Cells(line, 8) = Worksheets("Лист1").Cells(per_A, per_B)
End Sub
 
Private Function iper_AB()
For i = 3 To 10
If ComboBox1.Value = Worksheets("Лист1").Range("A" & i) Then per_A = i
Next i
If OptionButton1.Value = True Then per_B = 2
If OptionButton2.Value = True Then per_B = 3
If OptionButton3.Value = True Then per_B = 4
End Function
Добавлено через 19 минут
в качестве совета
не используйте зарезервированные слова
сдается мне, что line может использоваться
1
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 5
15.12.2013, 12:04  [ТС] 5
не сработало, ошибка та же

Добавлено через 4 минуты
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
Public line As Double
Public per_A As Integer
Public per_B As Integer
 
Private Sub UserForm_Initialize()
line = 1
For i = 3 To 10
ComboBox1.AddItem Worksheets("Лист1").Range("A" & i)
Next i
End Sub
 
Private Sub CommandButton1_Click()
Call iper_AB
MsgBox "Стоимость билета составит: : " & Worksheets("Лист1").Cells(per_A, per_B) & " рублей"
End Sub
 
Private Sub CommandButton2_Click()
line = line + 1
For i = 1 To 7
Worksheets("Лист2").Cells(line, i) = Choose(i, "Владивосток", ComboBox1.Value, TextBox4.Text, TextBox5.Text, TextBox1.Text, TextBox2.Text, TextBox3.Text)
Next i
Call iper_AB
Worksheets("Лист2").Cells(line, 8) = Worksheets("Лист1").Cells(per_A, per_B)
End Sub
 
Private Function iper_AB()
For i = 3 To 10
If ComboBox1.Value = Worksheets("Лист1").Range("A" & i) Then per_A = i В этой строке 424 error
Next i
If OptionButton1.Value = True Then per_B = 2
If OptionButton2.Value = True Then per_B = 3
If OptionButton3.Value = True Then per_B = 4
End Function
0
3795 / 1242 / 335
Регистрация: 07.08.2013
Сообщений: 3,118
15.12.2013, 12:26 6
Visual Basic
1
If UserForm.ComboBox1.Value = Worksheets("Лист1").Range("A" & i) Then per_A = i
1
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 5
15.12.2013, 12:57  [ТС] 7
Спасибо большое!
0
11065 / 3487 / 605
Регистрация: 13.02.2009
Сообщений: 10,388
15.12.2013, 13:07 8
не сработало, ошибка та же
1. Гадальщики уже предложили несколько вариантов решения задачи:
Пойди туда не знаю куда, сделай то не знаю что!
1. Опубликуй решаемую задачу. Как по мне так процентов 70 кода лишние.
Проверять на совпадение каждую строку списка!? Бр-р-р! Листиндекс есть же!
2. Уже просили: выложи свой файлик. Или секретный?
Что бы тебе помочь, желающие вынуждены создать файл с формой, заполнить данными, накидать контролов....
В твоём файле же, возможно, было достаточно одного апострофа но помощь была бы реальной.
А так люди затратили время не зная на что, а в результате: см. начало

Добавлено через 1 минуту
Пока писал ответ решение нашлось
0
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 5
15.12.2013, 13:13  [ТС] 9
Задача
0
Миниатюры
Найти ошибку в коде vba. "Subscript out of range "  
11065 / 3487 / 605
Регистрация: 13.02.2009
Сообщений: 10,388
15.12.2013, 13:28 10
Просили же выложить свой файл...
Вот возможные сокращения кода:

Visual Basic
1
2
3
4
5
6
7
8
ComboBox1.AddItem Worksheets("List1").Range("A3")
ComboBox1.AddItem Worksheets("List1").Range("A4")
ComboBox1.AddItem Worksheets("List1").Range("A5")
ComboBox1.AddItem Worksheets("List1").Range("A6")
ComboBox1.AddItem Worksheets("List1").Range("A7")
ComboBox1.AddItem Worksheets("List1").Range("A8")
ComboBox1.AddItem Worksheets("List1").Range("A9")
ComboBox1.AddItem Worksheets("List1").Range("A10")
=
Visual Basic
1
2
3
For C = 3 To 10
    ComboBox1.AddItem Worksheets("List1").Range("A" & C)
Next C
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
If ComboBox1.Value = Worksheets("List1").Range("A3") Then
per_A = 3
End If
If ComboBox1.Value = Worksheets("List1").Range("A4") Then
per_A = 4
End If
If ComboBox1.Value = Worksheets("List1").Range("A5") Then
per_A = 5
End If
If ComboBox1.Value = Worksheets("List1").Range("A6") Then
per_A = 6
End If
If ComboBox1.Value = Worksheets("List1").Range("A7") Then
per_A = 7
End If
If ComboBox1.Value = Worksheets("List1").Range("A8") Then
per_A = 8
End If
If ComboBox1.Value = Worksheets("List1").Range("A9") Then
per_A = 9
End If
If ComboBox1.Value = Worksheets("List1").Range("A10") Then
per_A = 10
End If
=
Visual Basic
1
per_A = ComboBox1.ListIndex + 3
Добавлено через 6 минут
Ещё короче
Visual Basic
1
2
3
For C = 3 To 10
    ComboBox1.AddItem Worksheets("List1").Range("A" & C)
Next C
=
Visual Basic
1
ComboBox1.RowSource = "A3:A10"
Добавлено через 1 минуту
В итоге 34 строки кода заменяются на 2
1
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 5
15.12.2013, 13:36  [ТС] 11
тема закрыта
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2013, 13:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выход за пределы вектора ("Vector subscript out of range") - найти и исправить ошибку в коде
Имеется код: struct orders { string product; string mark; string surname; ...

Не могу найти ошибку "String subscript out of range"
// Hamilton3.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h"...

Генератор Кроссвордов выдает ошибку "Vector subscript out of range"
Написал программу для курсовой, смысл в том что программа создает кроссворд из заданных слов в...

Как исправить ошибку "string subscript out of range"?
#include "stdafx.h" #include <iostream> #include <string> #include <cstring> using namespace...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.