Help con macro
Hola Elsa, nuevamente recurro a ti. Esta macro me funciona bien llamándola con un botón, pero si quiero agregarla a la hoja (que no esté como módulo) se la asigno a un commandbutton y me arroja un error donde dice aquí tengo problemas. No reconoce Range(Dir_1) como nombre de celda. Te agradeceré ayudarme.
Sub asignar_formulas2()
If Cells(8, 6) = "" Then
Application.ScreenUpdating = False
Dim dir_1, VAR1, VAR2
Dim lugar1, form
'copia nombres de celdas
'variables de salida
For iter1 = 1 To 20
lugar1 = Cells(iter1 + 7, 3).Formula
form = Replace(Replace(lugar1, "=", ""), "+", "")
Cells(iter1 + 7, 9) = form
Next iter1
'variable de entrada
lugar1 = Cells(4, 3).Formula
form = Replace(Replace(lugar1, "=", ""), "+", "")
Cells(4, 9) = form
'asigna formulas a las celdas seleccionadas como variables de salida
For iter2 = 1 To 20
Sheets("simulacion").Select
If Cells(iter2 + 7, 9) <> "" Then
'reemplaza punto por coma
dir_1 = Cells(iter2 + 7, 9)
VAR1 = Replace(Cells(iter2 + 7, 6), ",", ".")
VAR2 = Replace(Cells(iter2 + 7, 7), ",", ".")
'genera número aleatorio
Cells(iter2 + 7, 10) = Rnd
rnum = Cells(iter2 + 7, 10)
'define nombre de celda con aleatorio, se ocupa en la simulación
ActiveWorkbook.Names.Add Name:="rnum" & iter2, RefersToR1C1:= _
"=simulacion!R" & iter2 + 7 & "C10"
'copia fórmulas
Sheets("dat").Select
'*** aquí tengo problemas ***
Range(dir_1).Formula = "=NORMINV(rnum" & iter2 & "," & VAR1 & "," & VAR2 & ")"
Else
End If
Next iter2
Else
MsgBox ("LAS VARIABLES YA ESTÁN ASIGNADAS"), vbExclamation, "SIMULACIÓN"
End If
Range("a1").Select
End Sub
Sub asignar_formulas2()
If Cells(8, 6) = "" Then
Application.ScreenUpdating = False
Dim dir_1, VAR1, VAR2
Dim lugar1, form
'copia nombres de celdas
'variables de salida
For iter1 = 1 To 20
lugar1 = Cells(iter1 + 7, 3).Formula
form = Replace(Replace(lugar1, "=", ""), "+", "")
Cells(iter1 + 7, 9) = form
Next iter1
'variable de entrada
lugar1 = Cells(4, 3).Formula
form = Replace(Replace(lugar1, "=", ""), "+", "")
Cells(4, 9) = form
'asigna formulas a las celdas seleccionadas como variables de salida
For iter2 = 1 To 20
Sheets("simulacion").Select
If Cells(iter2 + 7, 9) <> "" Then
'reemplaza punto por coma
dir_1 = Cells(iter2 + 7, 9)
VAR1 = Replace(Cells(iter2 + 7, 6), ",", ".")
VAR2 = Replace(Cells(iter2 + 7, 7), ",", ".")
'genera número aleatorio
Cells(iter2 + 7, 10) = Rnd
rnum = Cells(iter2 + 7, 10)
'define nombre de celda con aleatorio, se ocupa en la simulación
ActiveWorkbook.Names.Add Name:="rnum" & iter2, RefersToR1C1:= _
"=simulacion!R" & iter2 + 7 & "C10"
'copia fórmulas
Sheets("dat").Select
'*** aquí tengo problemas ***
Range(dir_1).Formula = "=NORMINV(rnum" & iter2 & "," & VAR1 & "," & VAR2 & ")"
Else
End If
Next iter2
Else
MsgBox ("LAS VARIABLES YA ESTÁN ASIGNADAS"), vbExclamation, "SIMULACIÓN"
End If
Range("a1").Select
End Sub
1 Respuesta
Respuesta de Elsa Matilde
1