Retroceder   Foro Ayuda Excel > Dudas y consultas sobre Excel > Macros y programación VBA
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
LinkBack Herramientas Desplegado
  #1  
Antiguo 18/10/08, 22:27:01
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: España
Mensajes: 3
Predeterminado buscar nobres

Hola,
He creado una macro para buscar un nombre en una lista a través de un formulario en el utilizo un combobox para la búsqueda. La lista de datos contiene dos campos: El nombre del operario y el turno al que pertenece. El código que utilzo es:
Private Sub btnaceptar_Click()
Dim turno$
Dim fila As Long
Dim encontrada$

Worksheets("PERSONAL").Activate
encontrada = "no encontrada"
fila = 3
Do While Cells(fila, 6) <> Empty

If UCase(ActiveSheet.Cells(fila, 6)) = UCase(cmboperario) Then

txtturno.Text = Cells(fila, 7)
Cells(fila, 7) = turno



encontrada = "encontrada"


End If
fila = fila + 1
Loop
If encontrada = "no encontrada" Then
MsgBox "Operario no encontrado", vbInformation + vbOKOnly, "buscar"

End If
Lo que pretendo con este código es que me encuentre el operario en la lista y coja el turno al que pertenece, por que en función del turno al que pertenezca irá a buscar en otra hoja un calendario donde me contará los días de fiesta de la siguiente forma:
'-----------------------------------------------------------------

Application.ScreenUpdating = False
'celda = ActiveCell.Address
turno = ActiveCell.Address

For i = 1 To 4999

If InStr(UCase(ActiveCell), "F") <> 0 Then contador = contador + 1
ActiveCell.Offset(1, 0).Select

If contador = "" Then contador = 0

Range("W1") = "Se ha encontrado " & contador & " veces, la palabra: " & palabra_a_buscar
Next
Range(turno).Select
Application.ScreenUpdating = True
End Sub

El problema que tengo es que a veces encuentra el operario pero no selecciona correctamente el rango de la hoja calendario y en otras ocasiones no encuentra el operario cuando de hecho si está en la lista de datos.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2  
Antiguo 19/10/08, 05:47:54
ST_ ST_ is offline
Gran participante
 
Usuario desde: sep 2008
Versión de Excel: Excel 2003
Conectado desde: México
Mensajes: 411
Predeterminado

Cita:
Empezado por pititor Ver Mensaje
...El problema que tengo es que a veces encuentra el operario pero no selecciona correctamente el rango...
prueba con "Find".
esto es de un ejempo que subí al foro,debes adaptarlo
Código:
Sub busca() 
Set dato = ActiveSheet.[a2:A25].Find([d9], LookIn:=xlValues)
If dato Is Nothing Then
    MsgBox "La fecha no se encuentra en la lista"
Else
    MsgBox "Fecha localizada en: " & dato.Address: dato.Select
    dato.Interior.ColorIndex = [d7].Value
End If
End Sub
sustituye :
1.-el rango e busqueda.-en mi caso fué A2:A25 de la hoja activa
2.-d9 por cmboperario

los mensajes 1 y2 :
MsgBox "el operario no se encuentra en la lista"

MsgBox "Operario localizado en: " & dato.Address: dato.Select

tambien:
dato.Interior.ColorIndex = [d7].Value por:
Msgbox "El operario " & dato & " esta en el turno " & dato.offset(0,1).value
o bien por su variable

turno=dato.offset(0,1)
Msgbox "El operario " & dato & " esta en el turno " & turno

pero entonces el 2º msgbox saldria sobrando ,solo dejar la parte donde selecciona es decir dato.Select

recordé que tengo unos ejemplos que +/- se asemejan a lo que quieres
enlace1
ejemplo1

enlace2
ejemplo2

enlace3
ejemplo3
__________________
Salu2 ST

Última edición por ST_ fecha: 19/10/08 a las 06:12:16.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3  
Antiguo 20/10/08, 09:49:50
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: España
Mensajes: 3
Predeterminado buscar nombre

Hola ST_

Pruebo tus sugerencias y lo comento
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4  
Antiguo 20/10/08, 16:42:03
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: España
Mensajes: 3
Predeterminado

Hola ST_,

He solucionado el problema. Dejo el código en el foro.

Private Sub btnaceptar_Click()
Dim turno$
Dim fila As Long
Dim encontrada$
Dim operario As String

Worksheets("DATOS").Activate

encontrada = "no encontrada"
fila = 6
turno = Cells(fila, 2)
operario = Cells(fila, 1)

Do While Cells(fila, 1) <> Empty

If UCase(ActiveSheet.Cells(fila, 1)) = UCase(cmboperario) Then

turno = Cells(fila, 2)
operario = Cells(fila, 1)
encontrada = "encontrada"

End If

fila = fila + 1
Loop
If encontrada = "no encontrada" Then
MsgBox "Operario no encontrado", vbInformation + vbOKOnly, "buscar"
Worksheets("CALENDARIO").Activate
Worksheets("CALENDARIO").Range("W1").ClearContents

Exit Sub
End If
'----------------------------------------------------------------
Worksheets("CALENDARIO").Activate

If turno = "A" Then
Range("C2").Select
End If

If turno = "B" Then
Range("D2").Select
End If

If turno = "C" Then
Range("E2").Select
End If

If turno = "D" Then
Range("F2").Select
End If

If turno = "E" Then
Range("G2").Select
End If
'-----------------------------------------------------------------
Application.ScreenUpdating = False

celda = ActiveCell.Address


For i = 1 To 4999

If InStr(UCase(ActiveCell), "D") <> 0 Then contador = contador + 1
If InStr(UCase(ActiveCell), "V") <> 0 Then contador = contador + 1
If InStr(UCase(ActiveCell), "F") <> 0 Then contador = contador + 1

ActiveCell.Offset(1, 0).Select

If contador = "" Then contador = 0

Range("W1") = "El operario " & operario & " tiene " & contador & " dias de vacaciones "
Next

Range(celda).Select

Application.ScreenUpdating = True

End Sub
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT +2. Ahora son las 02:18:35.


© Ayuda Excel

Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

1 2 3 4 5 6 7