Foros del Web » Soporte técnico » Ofimática »

Ayuda Excel y Vb

Estas en el tema de Ayuda Excel y Vb en el foro de Ofimática en Foros del Web. Hola a todos, he encontrado este foro gracias a mis necesidades de aprender rapidamente Vb y excel :P les cuento que tengo que entregar un ...
  #1 (permalink)  
Antiguo 31/01/2008, 09:23
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Ayuda Excel y Vb

Hola a todos, he encontrado este foro gracias a mis necesidades de aprender rapidamente Vb y excel :P

les cuento que tengo que entregar un trabajo para mañana ...
y por primera vez en mi vida abri excel el hace 4 dias xD
bueno, hasta el momento no habia tenido problemas... salvo ahora...
se que aqui hay gente que sabe mucho (me he dado cuenta leyendo sus respuestas :D) y me gustaria saber si es que me pueden ayudar

les cuento , tengo un problema especificamente con el trozo de codigo de busqueda (al menos asi me dice VB):

Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate


' en What:=TextBox1, he reemplazado Textbox1 por TextBox1.text , con variables, con palabras directas, etc...

lo que supuestamente hago es buscar en al hoja si es que existe alguna coisidencia (busco nombre de un usuario, el nombre lo tomo de un txtbox de un formulario) y si la encuentra le digo al usuario que no es necesario ingresar nuevamente a ese usuario por que ya se encuentra en los registros, esto funciona muy bien cuando lo encuentra... pero cuando no encuentra coincidencias... me arroja el siguiente error : Runtime error '91' : Object variable or With Block variable is not set

he revisado varias cosas, declaracion de variables,si esta realizando la busqueda,errores de sintaxis, etc... pero nada...

disculpen si es que mi pregunta es muy basica o tiene una resolucion simple, pero a mi realmente me esta volviendo loco, he tenido que aprender mucho en muy poco tiempo, asi que mi dominio no es el mejor .

otra pregunta, aun no termino de entender si es que ese codigo (el de busqueda) retorna un valor o no (booleano)...


aqui va el ppio. del codigo:

Private Sub CommandButton1_Click()

Sheets("Dotacion").Select
Range("a1").Select




Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate


If ActiveCell.Text <> TextBox1.Text Then

Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select

Loop
' luego aqui comienzo a ingresar (codigo que no coloque por que ya esta probado)


muchas gracias de antemano, si escribi mal mi pregunta es solo por que no se de que trata el error y no se que sector del codigo les puede ayudar mas, me limite a esto por que supuestamente en el principio hago la busqueda y automaticamente me arroja el error... (pienso que no deberia influir el resto del codigo para este error) , en el caso de que alguien para responder mi pregunta necesite mas codigo , me dice, si quiere le entrego todo el codigo :D

adiós
  #2 (permalink)  
Antiguo 31/01/2008, 09:35
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: Ayuda Excel y Vb

Hola Dark_Guey. Bienvenido a FdW.

Coloca este código como primera línea del macro, y te omitirá los errores. Como no encuentra la palabra buscada, te sale el error 91. Colocando esta línea, todo se soluciona:
Código:
On error resume next
Aunque si lo deseas, en lugar de esa línea, puedes colocar esta parte de código si da error 91:
Código:
If Err = 91 Then
    respuesta = MsgBox("palabra no encontrada", vbCritical, "Lo siento...")
End If
Salu2
  #3 (permalink)  
Antiguo 31/01/2008, 10:25
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Ayuda Excel y Vb

Muchisimas gracias por la rapida respuesta 3pies!!!
al parecer no fue tan dificil para ti :D

ahora me funciona :D
espero terminar el trabajo muy pronto
me has dado minutos u horas valiosas de trabajo :D
cuidate
adiós
  #4 (permalink)  
Antiguo 31/01/2008, 10:56
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Ayuda Excel y Vb

yo de nuevo! :D:D
resulta que me es mas util la segunda opcion que me diste, ese codigo lo pego antes o despues de la busqueda? y Err es una variable cualquiera o una palabra resevada de Visual Basic?

Gracias nuevamente por tu respuesta :D
  #5 (permalink)  
Antiguo 31/01/2008, 11:50
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: Ayuda Excel y Vb

Colócalo después de la búsqueda, porque si lo colocas antes, como no hay error, nunca se mostrará el msbox.

Err es un objeto de VB, aunque en palabras llanas, podríamos decir que es una palabra reservada.

Salu2
  #6 (permalink)  
Antiguo 31/01/2008, 13:08
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Ayuda Excel y Vb

muchas gracias 3pies :D

puede hacer otra pregunta en este mismo tema o debo abrir un tema nuevo?
es sobre el mismo trabajo , pero una pregunta distinta...
bueno , la haré por aqui , si es que no es el lugar me dices y borro o edito el comentario...
dentro de lo que tengo que hacer hay una parte en que debo comprobar si una hoja a sido creada, me explico:

Juan Perez a sido ingresado, y como todo trabajador ingresado se crean 2 formularios para el Juan Perez F1 y Juan Perez F2 , en una de las opciones de mi formulario tengo la posibilidad de corregir algun error como por ejemplo que a juan perez se le haya borrado un formulario, ahora, la pregunta es : como detecto esto?

me pasa algo similar con los errores.. pero ahora es un error 9 ...

he probado buscando con

Sheets(vof).Select

donde vof es una variable del tipo string que almacena el nombre de la hoja
esta linea la he probado con operaciones condicionales y logicas

ejemplo :

If Sheets(vof).Select Then
contador = 1
Else
contador = 0
end if

luego digo, si encuentra "vof" el contador será 1 si no será 0
pero nunca toma el valor 0

tambien trate con

If Sheets(vof).Select = true Then
contador = 1
Else
contador = 0

tambien lo hice de forma separada

If Sheets(vof).Select Then
contador = 1
End if
If Sheets(vof).Select Then
contador = 0
End If

trate tambien de colgarme al error y que cuando ocurriera el error es por que no la encuentra y ahi cambio el numero del contador a 0 ... pero el problema es que con el goto me voy a una linea pero me salto varias tambien :(

asi que no me sirve
alguna ayudita?
:D:D
gracias 3pies! :D:D
  #7 (permalink)  
Antiguo 31/01/2008, 13:21
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: Ayuda Excel y Vb

Yo diría que de esta forma te tiene que funcionar (lo acabo de probar y a mí me funciona, me devuelve 1):
Código:
If Sheets(vof).Select Then
contador = 1
Else
contador = 0
end if
Siempre y cuando la variable vof tome algún valor. ¿Seguro que esa variable no está vacía?. Prueba a imprimir el valor de vof en una celda, a ver que te sale.

Salu2
  #8 (permalink)  
Antiguo 03/02/2008, 20:35
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Ayuda Excel y Vb

amigo 3pies, antes que todo muchas gracias por tus respuestas, me han sido de gran ayuda...

con respecto a lo que dices, si , funciona cuando encuentra una, pero cuando no encuentra arroja de inmediato un error.
lo que me gustaria es que si no la encuentra (la hoja) se metiera en el else y le diera el valor 0 al contador, eso es lo que no hace, sino que se produce de inmediato un error.

quiero acceder a tener el contador en 0 para que si no la encuentra poder hacer otro if que pregunte si es que el contador es 0 cree la hoja que no existe.

muchas gracias nuevamente
espero haber sido claro con el problema, de lo contrario dime y lo trato de explicar mejor .


adiós
  #9 (permalink)  
Antiguo 04/02/2008, 04:41
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: Ayuda Excel y Vb

Prueba esto:
Código:
Sub comprobar_la_existencia_de_la_hoja()
hoja_de_calculo = "vof"
On Error Resume Next
Sheets(hoja_de_calculo).Select
'comprobamos si existe o no la hoja
If ActiveSheet.Name <> hoja_de_calculo Then
    contador = 0
    respuesta = MsgBox("La hoja de cálculo no existe." + Chr(13) + "¿Deseas crear una hoja de cálculo que se llame """ & hoja_de_calculo & """?", vbOKCancel, "Pregunta")
    If respuesta = 1 Then
       'Añadimos la hoja
        Sheets.Add
        ActiveSheet.Select
        ActiveSheet.Name = hoja_de_calculo
        mensaje = MsgBox("La hoja de cálculo """ & hoja_de_calculo & """ ha sido creada.", vbOKOnly, "Conclusión")
    End If
Else
    contador = 1
End If
End Sub
Si no encuentra la hoja de cálculo, la primera vez que ejecutes el macro, la variable "contador" tomará valor 0, y se creará de forma automática la hoja, siempre que se responda afirmativamente a la pregunta de si deseas crearla. Si vuelves a ejecutar el macro, y hemos contestado que sí deseábamos crear la hoja, "contador" valdrá 1, pero si contestamos que no queríamos crearla, "contador" seguirá valiendo 0.

Espero que te sirva.

PD: Acabo de editar el macro, para incorporar la pregunta de si se desea o no crear la hoja, cuando no existe.

Salu2

Última edición por 3pies; 04/02/2008 a las 05:42
  #10 (permalink)  
Antiguo 06/02/2008, 09:02
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Ayuda Excel y Vb

Gracias nuevamente 3 pies! :D:D:D

adivina que... tengo otra duda XD
necesito eliminar una cierta seleccion (matriz si la miras como coordenadas)
pero el problema es que la "matriz" esta situada en la hoja de calculo despues de un texto variable.

lo unico que esta entre el texto y la matriz es un espacio en blanco, o sea la idea es llegar desde el ppio. hasta que la celda = empty
y situarme ahi, ahora...

como puedo hacer para seleccionar la matriz y luego eliminarla?

como la matriz es fija, lo iba a hacer a traves de offsets (e iteraciones) pero no existe un metodo menos largo?

si existe la forma te lo agradeceria, es para que el codigo se vea mas elegante
muchas gracias 3 pies! :D
  #11 (permalink)  
Antiguo 06/02/2008, 09:19
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: Ayuda Excel y Vb

Para seleccionar la matriz y luego eliminarla, tan solo tendrás que hacer lo siguiente:

1.- Desde la primera celda con datos, recorrer todo el rango (de 2 formas, mediante offsets, o yendo directamente hasta el final del rango).

2.- Avanzas 2 celdas (una sería la siguiente, la que está vacía, y otra, la primera celda con datos de la matriz a borrar).

3.- Hacer lo mismo que en el punto 1, pero en lugar de recorrer la matriz para situarte al final de la misma, seleccionando desde esa celda, hasta la última (la última la obtienes con offsets, o yendo directamente hasta el final). Pero ¿cómo sabemos cual es la primera celda con datos?. Con la propiedad "address", por ejemplo.

En mi blog sobre las hojas de cálculo excel explico en una de las últimas entradas (recorrer fila a fila, una columna) como desplazarse con y sin offsets, y en una de las entradas, también explico indirectamente para qué sirve la propiedad address (en una entrada llamada "separar cadenas de texto").

Espero que te sirva.
  #12 (permalink)  
Antiguo 07/02/2008, 06:50
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Ayuda Excel y Vb

muchas gracias 3pies!
no conocia tu blog, ahora lo leeré
cuidate
adiós
  #13 (permalink)  
Antiguo 06/09/2008, 22:33
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda Excel y Vb

3pies disculpa mi intromisón pero estan muy útiles tus codigos especialmente este de

On Error Resume Next

pero el de
if err = 91 then no me sale :(
  #14 (permalink)  
Antiguo 08/09/2008, 04:02
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: Ayuda Excel y Vb

Prueba a añadir un Msgbox a tu código, para que te muestre el número de error si no se trata del 91, y cámbialo en el condicional:
Código:
mensaje = MsgBox(Err)
Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:14.