Получил проблему в первой строке, не могу ее исправить - PullRequest
0 голосов
/ 12 июня 2019

У меня есть проблема с первой строкой моего кода, дело в том, что я не могу это исправить по какой-то причине.

Sub Main(numgen as Integer, letras as String, letra as String, celda as String)
    Call coincidir
    Dim numgen As Integer
    numgen = 0
    numgen = coincidir("Total general; A8:Z8; 0")
    numgen = numgen + 1

    Dim letras(1 To 25) As String

    letras(1) = "A"
    letras(2) = "B"
    letras(3) = "C"
    letras(4) = "D"
    letras(5) = "E"
    letras(6) = "F"
    letras(7) = "G"
    letras(8) = "H"
    letras(9) = "I"
    letras(10) = "J"
    letras(11) = "K"
    letras(12) = "L"
    letras(13) = "M"
    letras(14) = "N"
    letras(15) = "O"
    letras(16) = "P"
    letras(17) = "Q"
    letras(18) = "R"
    letras(19) = "S"
    letras(20) = "T"
    letras(21) = "U"
    letras(22) = "V"
    letras(23) = "W"
    letras(24) = "Y"
    letras(25) = "Z"

    Dim letra As String
    letra = "w"
    letras(numgen) = letra

    Dim celda As String
    celda = letra + "8"

    Range("celda").Select
    ActiveCell.FormulaR1C1 = "Comisión"
End Sub

1 Ответ

0 голосов
/ 12 июня 2019

Довольно много ошибок в вашем коде

  1. Удалить Dim numgen As Integer (уже объявлено в первой строке)
  2. Вы заполняете одну переменную три раза сразу, а это можно сделать в одном ряду
  3. Удалить Dim letra As String после того, как вы уже заполнили массив
  4. Удалить Dim celda As String (уже объявлено в первой строке)
  5. Удалить Dim letras As String в первой строке
  6. Избегайте выбора или активации диапазонов
  7. По какой-то причине вы заполняете диапазон формулой, состоящей всего из одного слова

должно выглядеть примерно так:

Sub Main(numgen as Integer, letra as String, celda as String)
    Dim letras(1 To 25) as String
    Call coincidir
    numgen = coincidir("Total general; A8:Z8; 0") + 1 

    ''' ommitted

    letra = "w"
    letras(numgen) = letra

    celda = letra + "8"

    Workbooks(REF).Sheets(REF).Range("celda").Value= "Comisión"
End Sub

Выполнение чего-либо в соответствии с Sub test(sheetname As String, Nr As Long) обычно выполняется, когда вы вызываете подпрограмму и хотите передать ей значения.
Например:

Sub test()

i = Range("A1").Value
str = "Sheet3"

anothersub sheetname:= str, Nr:= i

End Sub

Sub anothersub(sheetname As String, Nr As Long)

Dim sht As Worksheet

Set sht = Sheets(sheetname)

For i = 0 To Nr
    MsgBox i
Next i

End Sub

Теперь вы объявляете переменные дважды, что приводит к ошибкам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...