Error 1004
Hola Luis,
Espero puedas ayudarme, recurro a ti ya que no se que más hacer, estoy muy confundido (soy usuario casi novato..).
Utilizo Excel 2007 y me aparece el error : "se ha producido error 1004 por tiempo de ejecución:error definido por la aplicación o el objeto".
Específicamente en la frase del código: ActiveSheet. Range(Casilla_Inicial_100).Activate
Por más que he probado hacer variaciones a a esta frase no consigo arreglar el error (sospecho que Activate es lo que puedo estar utilizando mal..).
Espero haber sido lo suficientemente claro, en caso contrario solo dime que más te puedo aclarar. Te incluyo el código que tengo con problemas (perdón por lo largo):
Sub Botón1_Haga_clic_en()
Sheets("Tablas y Graficos").Select
Dim resultado12 As Double
Dim resultado23 As Double
If WorksheetFunction.IsNA(Range("R37")) Or WorksheetFunction.IsNA(Range("S38")) Then
MsgBox "No hay arido 1 o 2"
Range("R43").ClearContents
Else:
resultado12 = Buscar_Interseccion(Range("R37").Value, Range("S38").Value, "C6", 3) ' Este es para arido 1 con 2
Range("R43").ClearContents
Range("R43").Value = resultado12
End If
If Application.WorksheetFunction.IsNA(Range("S37")) Or Application.WorksheetFunction.IsNA(Range("T38")) Then
MsgBox "No hay arido 2 o 3"
Range("S43").ClearContents
Else:
resultado23 = Buscar_Interseccion(Range("S37").Value, Range("T38").Value, "D6", 2) ' Este es para arido 2 con 3
Range("S43").ClearContents
Range("S43").Value = resultado23
End If
End Sub
Function Buscar_Interseccion(Valor_0 As Double, Valor_100 As Double, Casilla_Inicial_100 As String, Offset_0 As Integer) As Double
'casilla inicial es string o variant??
Dim x As Double
Dim y As Double
Dim ma As Double
Dim mb As Double
Dim na As Double
Dim nb As Double
Dim valor_x2 As Double
Dim valor_x1 As Double
If Valor_0 = Valor_100 Then
MsgBox "Son iguales"
x = Valor_0
If x < Range("G39").Value Then
y = Range("AC38").Value * x + Range("AD38").Value
ElseIf x = Range("G39").Value Then
y = Range("H39").Value
Else
y = Range("AC40").Value * x + Range("AD40").Value
End If
Sheets("Tablas y Graficos").Range("C6:E19").Select
ElseIf Valor_0 < Valor_100 Then
ActiveSheet.Range(Casilla_Inicial_100).Activate
Do While IsEmpty(ActiveCell) Or IsEmpty(ActiveCell.Offset(0, 1))
ActiveCell.Offset(1, 0).Activate
Loop
Do While ActiveCell.Value > 100 - ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Activate
Loop
valor_x1 = ActiveCell.Offset(0, Offset_0).Value
valor_x2 = ActiveCell.Offset(-1, Offset_0).Value
MsgBox "El 0 es menor que el 100"
ma = (ActiveCell.Offset(-1, 1).Value - ActiveCell.Offset(0, 1).Value) / (valor_x2 - valor_x1)
mb = (ActiveCell.Offset(-1, 0).Value - ActiveCell.Value) / (valor_x2 - valor_x1)
na = ActiveCell.Offset(0, 1).Value - valor_x1 * (ActiveCell.Offset(-1, 1).Value - ActiveCell.Offset(0, 1).Value) / (valor_x2 - valor_x1)
nb = ActiveCell.Value - valor_x1 * (ActiveCell.Offset(-1, 0).Value - ActiveCell.Value) / (valor_x2 - valor_x1)
x = (100 - na - nb) / (mb + ma)
If x < Range("G39").Value Then
y = Range("AC38").Value * x + Range("AD38").Value
ElseIf x = Range("G39").Value Then
y = Range("H39").Value
Else
y = Range("AC40").Value * x + Range("AD40").Value
End If
Else
MsgBox "El 0 es mayor que el 100"
x = (Valor_0 + Valor_100) / 2
If x < Range("G39").Value Then
y = Range("AC38").Value * x + Range("AD38").Value
ElseIf x = Range("G39").Value Then
y = Range("H39").Value
Else
y = Range("AC40").Value * x + Range("AD40").Value
End If
End If
Buscar_Interseccion =...
Espero puedas ayudarme, recurro a ti ya que no se que más hacer, estoy muy confundido (soy usuario casi novato..).
Utilizo Excel 2007 y me aparece el error : "se ha producido error 1004 por tiempo de ejecución:error definido por la aplicación o el objeto".
Específicamente en la frase del código: ActiveSheet. Range(Casilla_Inicial_100).Activate
Por más que he probado hacer variaciones a a esta frase no consigo arreglar el error (sospecho que Activate es lo que puedo estar utilizando mal..).
Espero haber sido lo suficientemente claro, en caso contrario solo dime que más te puedo aclarar. Te incluyo el código que tengo con problemas (perdón por lo largo):
Sub Botón1_Haga_clic_en()
Sheets("Tablas y Graficos").Select
Dim resultado12 As Double
Dim resultado23 As Double
If WorksheetFunction.IsNA(Range("R37")) Or WorksheetFunction.IsNA(Range("S38")) Then
MsgBox "No hay arido 1 o 2"
Range("R43").ClearContents
Else:
resultado12 = Buscar_Interseccion(Range("R37").Value, Range("S38").Value, "C6", 3) ' Este es para arido 1 con 2
Range("R43").ClearContents
Range("R43").Value = resultado12
End If
If Application.WorksheetFunction.IsNA(Range("S37")) Or Application.WorksheetFunction.IsNA(Range("T38")) Then
MsgBox "No hay arido 2 o 3"
Range("S43").ClearContents
Else:
resultado23 = Buscar_Interseccion(Range("S37").Value, Range("T38").Value, "D6", 2) ' Este es para arido 2 con 3
Range("S43").ClearContents
Range("S43").Value = resultado23
End If
End Sub
Function Buscar_Interseccion(Valor_0 As Double, Valor_100 As Double, Casilla_Inicial_100 As String, Offset_0 As Integer) As Double
'casilla inicial es string o variant??
Dim x As Double
Dim y As Double
Dim ma As Double
Dim mb As Double
Dim na As Double
Dim nb As Double
Dim valor_x2 As Double
Dim valor_x1 As Double
If Valor_0 = Valor_100 Then
MsgBox "Son iguales"
x = Valor_0
If x < Range("G39").Value Then
y = Range("AC38").Value * x + Range("AD38").Value
ElseIf x = Range("G39").Value Then
y = Range("H39").Value
Else
y = Range("AC40").Value * x + Range("AD40").Value
End If
Sheets("Tablas y Graficos").Range("C6:E19").Select
ElseIf Valor_0 < Valor_100 Then
ActiveSheet.Range(Casilla_Inicial_100).Activate
Do While IsEmpty(ActiveCell) Or IsEmpty(ActiveCell.Offset(0, 1))
ActiveCell.Offset(1, 0).Activate
Loop
Do While ActiveCell.Value > 100 - ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Activate
Loop
valor_x1 = ActiveCell.Offset(0, Offset_0).Value
valor_x2 = ActiveCell.Offset(-1, Offset_0).Value
MsgBox "El 0 es menor que el 100"
ma = (ActiveCell.Offset(-1, 1).Value - ActiveCell.Offset(0, 1).Value) / (valor_x2 - valor_x1)
mb = (ActiveCell.Offset(-1, 0).Value - ActiveCell.Value) / (valor_x2 - valor_x1)
na = ActiveCell.Offset(0, 1).Value - valor_x1 * (ActiveCell.Offset(-1, 1).Value - ActiveCell.Offset(0, 1).Value) / (valor_x2 - valor_x1)
nb = ActiveCell.Value - valor_x1 * (ActiveCell.Offset(-1, 0).Value - ActiveCell.Value) / (valor_x2 - valor_x1)
x = (100 - na - nb) / (mb + ma)
If x < Range("G39").Value Then
y = Range("AC38").Value * x + Range("AD38").Value
ElseIf x = Range("G39").Value Then
y = Range("H39").Value
Else
y = Range("AC40").Value * x + Range("AD40").Value
End If
Else
MsgBox "El 0 es mayor que el 100"
x = (Valor_0 + Valor_100) / 2
If x < Range("G39").Value Then
y = Range("AC38").Value * x + Range("AD38").Value
ElseIf x = Range("G39").Value Then
y = Range("H39").Value
Else
y = Range("AC40").Value * x + Range("AD40").Value
End If
End If
Buscar_Interseccion =...
1 respuesta
Respuesta de Luis_P
1