Error de compilación: Número de argumentos es incorrecto o la asignación de la propiedad no es válida

Estimados tengo este código pero me sale el error cuando hace la llamada a la funtion contador1(). Su apoyo por favor.

En el código en esta línea sale el error: V1 = contador1(1, "A")

Sub ActualizarConsumos()
Dim ARCHIVOS As String, rcd As arreglo, nomhoja As String, n As Integer, mov As arreglo
libro_programa = ActiveWorkbook.Name

rigs = 1
rigs2 = 1
carpeta = "D:\ANALISIS MRs 2017\NEW CONSUMOS\"
'"G:\BIENES DE CAPITAL\TECHNICAL DEPARTMENT\ANALISIS MRs 2017\NUEVOS CONSUMOS\"
'\\10.172.80.34\g\BIENES DE CAPITAL\TECHNICAL DEPARTMENT\ANALISIS MRs 2017\NUEVOS CONSUMOS
'D:\ANALISIS MRs 2017\NUEVOS CONSUMOS\
ARCHIVOS = Dir(carpeta)
If Len(ARCHIVOS) = 0 Then
MsgBox "NO TIENE NINGUN DOCUMENTO EN LA CARPETA ""CONSUMOS NUEVOS"""
Exit Sub
End If
Do While Len(ARCHIVOS) > 0
rcd.elemento(rigs) = ARCHIVOS
ARCHIVOS = Dir()
rigs = rigs + 1
Loop
rigs = rigs - 1
carpeta2 = "D:\ANALISIS MRs 2017\CONSUMOS1\"
'"G:\BIENES DE CAPITAL\TECHNICAL DEPARTMENT\ANALISIS MRs 2017\CONSUMOS\"
'\\10.172.80.34\g\BIENES DE CAPITAL\TECHNICAL DEPARTMENT\ANALISIS MRs 2017\MATERIALES
'D:\ANALISIS MRs 2017\CONSUMOS\
ARCHIVOS = Dir(carpeta2)
Do While Len(ARCHIVOS) > 0
mov.elemento(rigs2) = ARCHIVOS
ARCHIVOS = Dir()
rigs2 = rigs2 + 1
Loop
rigs2 = rigs2 - 1
'MsgBox ("HECHO")
'Exit Sub
For inicio1 = 1 To rigs
MsgBox (rcd.elemento(inicio1))
Exit Sub
Workbooks.Open Filename:="D:\ANALISIS MRs 2017\NEW CONSUMOS\" & rcd.elemento(inicio1) & ""
'G:\BIENES DE CAPITAL\TECHNICAL DEPARTMENT\ANALISIS MRs 2017\NUEVOS CONSUMOS\
'D:\ANALISIS MRs 2017\NUEVOS CONSUMOS\
nombrenuevolibro = ActiveWorkbook.Name
nombrenuevohoja = ActiveSheet.Name
'nombre_amos_2 = Range("AF2")
nombre_amos_2 = Range("B2")
V1 = contador1(1, "A")
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Range("C1").Select
ActiveWorkbook.Worksheets(nombrenuevohoja).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(nombrenuevohoja).Sort.SortFields.Add Key _
:=Range("C2:C" & V1), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(nombrenuevohoja).Sort
.SetRange Range("A1:V" & V1)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

end sub

Esta es la función contador.

Function contador1(columna)
Range(columna & "1").Select
Range(Selection, Selection.End(xlDown)).Select
contador = Selection.Count
End Function

1 Respuesta

Respuesta
1

Tienes errores de sintaxis y de conceptos:

Contador1(1, "A") llama a una función con dos argumentos

Function contador1(columna)    indica que la función tiene un solo argumento,.

Count debes usarlo para contar la filas, no una selección

Si el rango cambia porque borras datos también deberías convertir la función en Volátil

Pero lo que es un error de concepto es que una función no debería ejecutar un método (Select)

Deberías llamar a la función simplemente contador("A")

Y la función debería ser:

Function contador1(columna)

Application.Volatile

Dim celda as Range, temp as Long

Set celda = Range(columna & "1")

temp = Range(celda, celda.End(xlDown)).Rows.Count

Set celda = Nothing

contador1= temp
End Function

o más facil

Function contador1(columna)

Application.Volatile

contador1 = Range(columna & "1" ).End(xlDown).Row

End Function

Saludos,

Jaime

PD: No olvides valorar la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas