数组(按编号生成错误的元素)

时间:2017-05-25 06:59:23

标签: arrays vba excel-vba find excel

程序必须找到某些单元格并插入其他书籍中的偏移数据。错误不会跳出来,并且最初它可以正常工作,但是然后,例如,应该是F(t)= 7,取F(t)= 6。

我找不到错误。也许这就像(调用没有参数的数组函数将返回一个零长度数组。这将有一个有趣的效果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 = o 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

0 个答案:

没有答案