Saltar al contenido

"Error 91 en tiempo de ejecución"


Recommended Posts

publicado

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

Invitado Cacho R
publicado

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.

Invitado Gengis Khan
publicado

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

publicado

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,

publicado

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

publicado

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)

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.