Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/07/2011, 21:06
JonathanB
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 14 años, 5 meses
Puntos: 25
Mensaje Respuesta: obtener nombre de control combobox

Saludos,

Primero: Te recomiendo que revises la siguiente guía y esta tambien, puedes usar el navegador google chrome para ver la página traducida.

Segundo: Usa las opciones del foro para mostrar tu código, ya que facilita la lectura del mismo (más personas te pueden ayudar).

Tercero: No son críticas, son sugerencias :)

Código vb:
Ver original
  1. Private Function ComboPropietario() As ComboBox
  2.    Dim cbx1 As Control
  3.  
  4.    If cbxUNP.Visible Then
  5.       ComboPropietario = cbxUNP.Name
  6.    ElseIf cbxPromotorP.Visible Then
  7.       ComboPropietario = cbxPromotorP.Name
  8.    Else
  9.       ComboPropietario = cbxGerenciaP.Name
  10.    End If
  11. End Function

Ok el problema lo tienes en la funcion ComboPropietario(), recuerda que debes de asignar un objeto ComboBox que es el que devuelves en la función.

Para asignar un objeto lo haces de la siguiente manera:
Código vb:
Ver original
  1. Set objObjeto1 = objObjeto2

El código de tu función ComboPropietario quedaria de la siguiente manera:
Código vb:
Ver original
  1. Private Function ComboPropietario() As ComboBox
  2.  
  3.     If cbxUNP.Visible Then
  4.         ' Primero asignar el objeto
  5.        Set ComboPropietario = cbxUNP
  6.         ComboPropietario = cbxUNP.Name
  7.     ElseIf cbxPromotorP.Visible Then
  8.         Set ComboPropietario = cbxPromotorP
  9.         ComboPropietario = cbxPromotorP.Name
  10.     Else
  11.         Set ComboPropietario = cbxGerenciaP
  12.         ComboPropietario = cbxGerenciaP.Name
  13.     End If
  14.  
  15. End Function

Con eso creo que ya puedes modificar el resto de tu código, ya que a mi me genera error en ComboCompartido (Por no tener el código).

Tambien puedes arreglar tu manejo de errores de la siguiente manera:

Has creado dos etiquetas una arriba de la otra, sin embargo algo que han criticado mucho a los programadores de VB es el uso de goto, trata de usarlo solo para manejo de errores, pero no te muevas de un lado para otro ;)

Por ejemplo el manejo de los errores en tu funcion ValidaCampos puede quedar de la siguiente manera:

Código vb:
Ver original
  1. 'Esto es casi el final de tu función ValidaCampos
  2.    If bFalta = True Then
  3.         MsgBox "Favor de llenar los campos vacíos", vbInformation
  4.         bNoOk = True
  5.     End If
  6.  
  7.     Exit Function
  8.    
  9. Err_ValidaCampos:
  10.     Me.MousePointer = 0
  11.     MsgBox Err.Description
  12.  
  13. End Function

Y la última cosita (es la última lo prometo ) es que uses funciones cuando vas a devolver un valor, si no vas a devolver un valor puedes usar procedimientos:

Código vb:
Ver original
  1. Private Sub ValidarCampos2()
  2.     'En lugar de Exit Function utilizas Exit Sub
  3.    Exit Sub
  4. End Sub

Espero que te sea de utilidad y que tomes mis comentarios de una manera constructiva para que sigas aprendiendo y sigas avanzando en la programación (.Net).

Última edición por JonathanB; 14/07/2011 a las 21:08 Razón: Agregue otro enlace