Jump to content

"Error 91 en tiempo de ejecución"


Recommended Posts

Posted

Hola, quiero pedir de su ayuda una vez más con el siguiente código, lo que sucede es que me marca error 91 en la 4ta linea "buscar.Activate", no tengo idea de como solucionarlo

Private Sub BAgregar_Click() Dim buscar As Range
Set buscar = Cells.Find(What:=TbPaciente)
buscar.Activate
b = ActiveCell.Row
TbIMC.Text = Sheets("Pacientes_Cb").Range("Y" & .Text
TbGrasaK.Text = Sheets("Pacientes_Cb").Range("AC" & .Text
TbGrasaP.Text = Sheets("Pacientes_Cb").Range("AD" & .Text
TbMusculoK.Text = Sheets("Pacientes_Cb").Range("AE" & .Text
TbMusculoP.Text = Sheets("Pacientes_Cb").Range("AF" & .Text
End Sub
[/PHP]

De antemano gracias

Guest Cacho R
Posted

Hola! icemoonlove

Prueba reemplazar:

buscar.Activate

b = ActiveCell.Row

por:

b = buscar.Row

Y, al mismo tiempo, reemplaza:

Set buscar = Cells.Find(What:=TbPaciente)

por:

Set buscar = Sheets("Pacientes_Cb").Cells.Find(What:=TbPaciente)

Saludos, Cacho R.

Guest Gengis Khan
Posted

Buenos días:

Con el permiso del Sr.Cacho-R, creo que también valdría:

Sustituir:



Set buscar =Cells.Find(What:=TbPaciente)


[/CODE]

por:

[CODE]

Set buscar = Sheets("Pacientes_Cb").Cells.Find(What:=TbPaciente)

If buscar Is Nothing Then
MsgBox TbPaciente & " no encontrado"
Exit Sub
End If

[/CODE]

Saludos

Posted

Gracias a ambos, ya puse los códigos y ahora me sale "error 1004" en tiempo de ejecuccion en este parte del código

TbIMC.Text = Sheets("Pacientes_Cb").Range("Y" & .Text
[/PHP]

algun consejo,

Posted

Gracias por la ayuda encontré una forma diferente de hacerlo, paso el código por si alguien más tiene el mismo problema


Private Sub BAgregar_Click()
Me.TbIMC.Text = Sheets("Pacientes_Cb").Range("A5:BF75").Find(Me.TbPaciente.Text).Offset(0, 24)
Me.TbGrasaK.Text = Sheets("Pacientes_Cb").Range("A5:BF75").Find(Me.TbPaciente.Text).Offset(0, 28)
End Sub
[/PHP]

Con esta solución doy por terminado este tema

Posted

Re: "Error 91 en tiempo de ejecución"

No se, pero creo....... que no es aconsejable asignar a un control del formulario la propiedad Text de un objeto Range. En su lugar, asigna Value. De hecho, creo que es la razón por la que el último código funciona bien, al escribir:

[COLOR=#0000BB][FONT=monospace]Me[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]TbGrasaK[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Text[/FONT][/COLOR] = [COLOR=#0000BB][FONT=monospace]Sheets[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"Pacientes_Cb"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Range[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"A5:BF75"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Find[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Me[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]TbPaciente[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Text[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Offset[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace][/FONT][/COLOR][COLOR=#007700][FONT=monospace], [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]28[/FONT][/COLOR][COLOR=#007700][FONT=monospace])

está asignando al control del formulario la propiedad intrínseca del objeto Range al que se hace referencia en el lado derecho de la igualdad (la cual es .Value)

[/font][/color]

- - - - - Mensaje combinado - - - - -

Incluso, todo cobra sentido con esta explicación. Porque en la cuarta línea del primer código que puso icemoonlove:

TbIMC.Text = Sheets("Pacientes_Cb").Range("Y" & b).Text

fallaba porque estaba asignando al TbIMC el valor del Text de la celda a que se hace referencia al lado derecho de la igualdad.

Hay una diferencia entre Text y Value. El Text es el texto de la celda (fuente, color, etc), mientras que Value es so contenido. Por eso, el Text de una celda no se puede asignar como valor de un control de formulario, pero el Value sí se puede. Hubiera funcionado bien con:

TbIMC.Text = Sheets("Pacientes_Cb").Range("Y" & b).Value

o simplemente:

TbIMC.Text = Sheets("Pacientes_Cb").Range("Y" & b)

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy