Array (выдает неправильные по номеру элементы) - VB
Формулировка задачи:
Программа должна находить определенные ячейки и вставлять со смещением данные из других книг .Ошибок не выскакивает , и в начале работает нормально , но затем там где например должно быть F(t)=7 ,берется F(t)=6 .
Не могу найти ошибку . Может это как то связано с (Вызов функции Array без параметров приведёт к возврату массива нулевой длинны. При этом будет наблюдаться интересный эффект LBound вернёт вам 0, а UBound вернёт -1, то есть верхняя граница окажется меньше нижней границы.) ?
Не могу найти ошибку . Может это как то связано с (Вызов функции Array без параметров приведёт к возврату массива нулевой длинны. При этом будет наблюдаться интересный эффект LBound вернёт вам 0, а UBound вернёт -1, то есть верхняя граница окажется меньше нижней границы.) ?
Sub связатьцифирь10() Dim book1 As Workbook Dim book2 As Workbook Dim r As Range Dim firstAddress As String Dim n, m, e, t As Long Dim A Dim B Dim D Dim F Dim G As String Dim H As String 'сезон (прошлый,допрошлый,додопрошлый) A = Array("прошлый", "допрошлый", "додопрошлый") 'страна D = Array("Англия", "Испания", "Италия", "Германия", "Голландия", "Франция", "Португалия", "Россия", "Украина") 'место (1,2,3,4,5,6) B = Array("1", "2", "3", "4", "5", "6") 'номер условия F = Array("6", "7", "8", "16", "17", "21", "22", "23", "25", "26", "29", "30", "31", "54", "55", "56", "57", "58", "59") 'Общ п/пр G = "AP100" 'Общ H = "AO100" Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx") 'переходим в активную страницу откуда надо скопировать данные' 'массив условие For t = 0 To 18 'массив сезон For n = 0 To 2 'массив страна For m = 0 To 8 'массив место For e = 0 To 5 'пропускаем ошибку On Error Resume Next Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 4\БАЗА ДАННЫХ\" + A(n) + " сезон\" + D(m) + "\" + B(e) + "-ое место\" + F(t) + ".xlsx") 'ищемс With book1.Worksheets("Лист1").Range("A1:CV808") Set r = .Find(What:="" + F(t) + "") If Not r Is Nothing Then firstAddress = r.Address Do 'условие для страны 'прошлый сезон If r.Offset(3, 0).Text = D(m) And A(n) = "прошлый" Then If B(e) = "1" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(6, 5).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(6, 6).PasteSpecial xlPasteValues End If If B(e) = "2" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(7, 5).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(7, 6).PasteSpecial xlPasteValues End If If B(e) = "3" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(8, 5).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(8, 6).PasteSpecial xlPasteValues End If If B(e) = "4" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(9, 5).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(9, 6).PasteSpecial xlPasteValues End If If B(e) = "5" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(10, 5).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(10, 6).PasteSpecial xlPasteValues End If If B(e) = "6" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(11, 5).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(11, 6).PasteSpecial xlPasteValues End If End If 'допрошлый сезон If r.Offset(3, 0).Text = D(m) And A(n) = "допрошлый" Then If B(e) = "1" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(6, 3).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(6, 4).PasteSpecial xlPasteValues End If If B(e) = "2" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(7, 3).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(7, 4).PasteSpecial xlPasteValues End If If B(e) = "3" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(8, 3).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(8, 4).PasteSpecial xlPasteValues End If If B(e) = "4" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(9, 3).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(9, 4).PasteSpecial xlPasteValues End If If B(e) = "5" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(10, 3).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(10, 4).PasteSpecial xlPasteValues End If If B(e) = "6" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(11, 3).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(11, 4).PasteSpecial xlPasteValues End If End If 'додопрошлый сезон If r.Offset(3, 0).Text = D(m) And A(n) = "додопрошлый" Then If B(e) = "1" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(6, 1).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(6, 2).PasteSpecial xlPasteValues End If If B(e) = "2" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(7, 1).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(7, 2).PasteSpecial xlPasteValues End If If B(e) = "3" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(8, 1).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(8, 2).PasteSpecial xlPasteValues End If If B(e) = "4" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(9, 1).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(9, 2).PasteSpecial xlPasteValues End If If B(e) = "5" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(10, 1).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(10, 2).PasteSpecial xlPasteValues End If If B(e) = "6" Then book2.Worksheets("" + F(t) + "").Range("" + G + "").Copy r.Offset(11, 1).PasteSpecial xlPasteValues 'копируем вторую ячейку book2.Worksheets("" + F(t) + "").Range("" + H + "").Copy r.Offset(11, 2).PasteSpecial xlPasteValues End If End If Set r = .FindNext(r) Loop While Not r Is Nothing And r.Address <> firstAddress End If End With book2.Close Next e book1.Save Next m Next n Next t book1.Save book1.Close End Sub
Решение задачи: «Array (выдает неправильные по номеру элементы)»
textual
Листинг программы
Set r = .Find(What:="" & F(t) & "", LookAt:=xlWhole, LookIn:=xlValues)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д