Combobox. Introducir datos lista sin repetirlos

Hola a todos,
Me acabo de registrar en el foro porque después de leer mucho no doy con la solución. Me han mandado una cosa en el trabajo que tiene que ser supersencilla pero no doy con ello... Siempre tengo algún error.
Lo que quiero hacer es copiar en una hoja excel, los datos que tengo en otra, es decir, si por ejemplo tengo Nombre edad dirección teléfono ciudad (las columnas de mi hoja de datos), copiar en otra hoja solamente las columnas que yo quiera, por ejemplo nombre y edad y solamente de la persona que elija, utilizando un combobox en el que aparezcan todos los nombres SIN REPEIR y elegir uno para que me saque todos sus datos. Una vez que elija el nombre le daría a un botón aceptar y me rellenaría la hoja nueva con los datos.
¿Cómo meto los datos en un combobox para que me aparezcan sin repetirse? Los nombres van aumentando.
A ver si me podéis echar una mano o tenéis un programa que sea parecido para ver como lo habéis hecho. Por favor! Que llevo dos semanas sin conseguir nada.
Muchísimas gracias.
Un saludo.

1 Respuesta

Respuesta
1
Estoy intentando resolver tu duda, per tengo una pregunta ¿En la lista de nombre, hay nombres repetidos?, creo que no los habrá, ya que de haberlos, tendrías sus datos repetidos.
Otra cuestión es que mediante listas, creo que se puede hacer muy fácil y copiar tú directamente los datos, pero buenocomo creo que lo que quieres es una macro, ya estoy en ello.
He estado haciendo unas pruebas y en principio a mi me funciona, lo único que tendríamos que afinarlo un poco, esto ya lo hablaríamos, Pero en principio de envío la macro y te dejo el fichero de prueba en esta dirección que te indico ahora
http://cid-3d609d87423f2eeb.skydrive.live.com/browse.aspx/P%c3%bablico
El nombre del fichero es JAVMIN82.XLS, con este fichero puedes hacer las pruebas que quieras, después hablamos. Ahora te adjunto la macro:
Private Sub CommandButton1_Click()
End
End Sub
Private Sub CommandButton2_Click()
Sheets(2).Rows("1:2").ClearContents
With Range("a:a")
Set c = .Find(ComboBox1.Value, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
n = 2
Sheets(2).Cells(1, 1) = Sheets(1).Cells(1, 1)
Sheets(2).Cells(2, 1) = ComboBox1
Do
If CheckBox1.Value = True Then
Sheets(2).Cells(1, n) = Sheets(1).Cells(1, 2)
Sheets(2).Cells(2, n) = Sheets(1).Cells(c.Row, 2)
n = n + 1
End If
If CheckBox2.Value = True Then
Sheets(2).Cells(1, n) = Sheets(1).Cells(1, 3)
Sheets(2).Cells(2, n) = Sheets(1).Cells(c.Row, 3)
n = n + 1
End If
If CheckBox3.Value = True Then
Sheets(2).Cells(1, n) = Sheets(1).Cells(1, 4)
Sheets(2).Cells(2, n) = Sheets(1).Cells(c.Row, 4)
n = n + 1
End If
Loop While Not c Is Nothing And c.Address <> firstAddress
Else
MsgBox "No se encuentra el dato"
End If
End With
Sheets(2).Select
Unload formulario1
End
End Sub
Private Sub UserForm_Initialize()
CheckBox1.Value = True
CheckBox2.Value = True
CheckBox3.Value = True
Columns("A:D").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ComboBox1.Clear
fila = 2
Sheets(1).Select
ComboBox1.AddItem ""
Do While Cells(fila, 1) <> ""
If Cells(fila, 1) <> Cells(fila - 1, 1) Then ComboBox1.AddItem Cells(fila, 1)
fila = fila + 1
Loop
End Sub
MUCHÍSIMAS GRACIAS por contestar tan rapido y con una respuesta tan completa! De verdad! Tu programa es prácticamente lo que quiero.
Acabo de leer lo que pregunte y la verdad es que puse un ejemplo muy malo! Es un programa que tengo que hacer para la oficina y las columnas son (nombre, proyecto, fecha...), por lo que una persona puede estar repetida las veces que sea porque puede tener varios proyectos en fechas distintas.
Lo que me refería con no repetirse, es en el combobox, que cuando desplegues la lista solamente te aparezca el nombre de cada persona solamente una vez, no tantas veces como proyectos tenga, no se si me explico muy bien ;) para que luego cuando se pulse aceptar se copie en otra hoja todos los proyectos de esa persona.
Un saludo!
Parqa solucionar esl problema de no repetir los nombres, hay dos opciones que yo veo a bote proto:
1.- Vía programación, chequear que no este repetido el nobre antes de meterlo al combobox
2.- Crear una columna con los nombres ordenados y sin repetir, esto te permitiría eliminar o añadir nombres sin nimguna dificultad.
No se que nivel tienes de conocimientos de programación o manejo de macros, pero si quieres me envías el fichero y te lo adapto a tus necesidades, y te incluyo un botón para buscar (que arranque la macro), mi correo [email protected] y en el asunto pon TODOEXPERTOS JAVMIN82, esto es para saber que es tu asunto.
De todas formas, si optas por hacerlo tú, aquí estoy para seguir ayudante, sería un poco más lento pero... parecido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas