Довольно много ошибок в вашем коде
- Удалить
Dim numgen As Integer
(уже объявлено в первой строке)
- Вы заполняете одну переменную три раза сразу, а это можно сделать в одном ряду
- Удалить
Dim letra As String
после того, как вы уже заполнили массив
- Удалить
Dim celda As String
(уже объявлено в первой строке)
- Удалить
Dim letras As String
в первой строке
- Избегайте выбора или активации диапазонов
- По какой-то причине вы заполняете диапазон формулой, состоящей всего из одного слова
должно выглядеть примерно так:
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
Теперь вы объявляете переменные дважды, что приводит к ошибкам