Excel - Asignar valor de combobox en columnas diferentes dependiendo de la opción

 
Vista:
sin imagen de perfil
Val: 17
Ha disminuido su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Asignar valor de combobox en columnas diferentes dependiendo de la opción

Publicado por Rebeca (8 intervenciones) el 24/01/2019 18:57:13
Tengo 7 opciones (a,b,c,d,e,f,g) asignadas a 3 combobox diferentes, entre las que debo elegir una por cada combobox. Éstas variables tienen asociadas un peso (kg) que se divide en partes iguales entre las opciones seleccionadas, el peso se ingresa mediante un textbox. El resultado de la división se debe asignar a cada una de las columnas correspondientes a la selección y rellenar con cero si no es la selección del combobox.
Pero, cuando ejecuto el código solamente asigna el peso del combobox3 a la columna correspondiente, dejando todas las demás opciones/columnas en cero. Cuando elimino el combobox3, la asignación se hace a la selección del combobox2...

Necesito que los 3 combobox del formulario llenen las celdas de la selección correspondiente (columna A,B,C) y además en la columnas de la F a la L debe poner el peso de cada selección, esto es "el textbox1/(combo1+combo2+combo3)" y ponerlo bajo la alternativa, llenar con cero si no corresponde a la selección del combo.

Estoy iniciando en macros, ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.066
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Asignar valor de combobox en columnas diferentes dependiendo de la opción

Publicado por Antoni Masana (1416 intervenciones) el 25/01/2019 08:54:59
No entiendo lo que explicas y que tiene que ver con el libro.

¿Donde estan los ComboBox?

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha disminuido su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Asignar valor de combobox en columnas diferentes dependiendo de la opción

Publicado por Rebeca (8 intervenciones) el 25/01/2019 11:56:10
Buenos dias,
Necesito que el botón que esta en la planilla abra un formulario que contiene 3 combobox (cada uno con 7 alternativas) y un textbox en el que se deben ingresar solo números, y que luego de ingresar los datos coloque las opciones seleccionadas en el formulario en la hoja1.cells(fila,(1,2,3,4)) respectivamente. Hasta ahí todo bien.
El problema surge al momento de ponderar las respuestas, es decir, si yo coloco en el textbox "30" (por dar un ejemplo), necesito que en hoja1.cells(fila,6-13) (una columna por cada alternativa del combobox) coloque 10 si se han seleccionado las 3 alternativas, 15 si solo he seleccionado 2 o 30 si solo he seleccionado 1 alternativa, cada uno de estos peso debe ir en la columna correspondiente a la alternativa.
Así es como tengo escrito el codigo:
(defino Combo11....ComboNN como enteros)
If ComboBox1.Value = "a" Then
COMBO11 = 1
Else: COMBO11 = 0
End If
(eso para cada uno de las 7 alternativas, y para cada uno de los combobox)

ST=combo11+...+comboNN

If ComboBox1.Value = "a" Then
Hoja1.Cells(FILA, 6) = (TextBox1 / ST)
Else: Hoja1.Cells(FILA, 6) = 0
End If
(para cada una de las 7 alternativas, por cada combobox)

Cuando ejecuto el código, solo me coloca la ponderación bajo una de las alternativas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.066
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Asignar valor de combobox en columnas diferentes dependiendo de la opción

Publicado por Antoni Masana (1416 intervenciones) el 25/01/2019 13:01:48
Hay un fallo que he visto cuando ya lo tenia publicado y no me da tiempo de arreglar antes de que salga.

Pronto te envío el Código.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.066
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Asignar valor de combobox en columnas diferentes dependiendo de la opción

Publicado por Antoni Masana (1416 intervenciones) el 25/01/2019 14:31:49
Este es el bueno.

Adjunto el codigo corregido del Formulario y el libro. (He añadido un botón para llamar al formulario)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
' </> ----------------------------------------------------------- </>
' </> ---&---  Inicializacion
' </> ----------------------------------------------------------- </>
 
Private Sub UserForm_Initialize()
    Dim Letras As String, a As Integer
    Letras = "abcdefg"
    For a = 1 To 7
        ComboBox1.AddItem Mid$(Letras, a, 1)
        ComboBox2.AddItem Mid$(Letras, a, 1)
        ComboBox3.AddItem Mid$(Letras, a, 1)
    Next
    ComboBox1.ListIndex = 0
    ComboBox2.ListIndex = 0
    ComboBox3.ListIndex = 0
End Sub
 
Private Sub aceptar_Click()
    Dim Fila As Integer, Letras As String, Rep As String, Dif As String
    Dim a As Integer, Marca As String, Divide As String
 
    Letras = "abcdefg"
 
    Fila = 3
    While Cells(Fila, 1) <> ""
        Fila = Fila + 1
    Wend
 
    Hoja1.Cells(Fila, 1) = ComboBox1.Value
    Hoja1.Cells(Fila, 2) = ComboBox2.Value
    Hoja1.Cells(Fila, 3) = ComboBox3.Value
    Hoja1.Cells(Fila, 4) = TextBox1.Value
 
    Marca = ""
    Marca = Marca & ComboBox1.Value:  L1 = ComboBox1.Value
    Marca = Marca & ComboBox2.Value:  L2 = ComboBox2.Value
    Marca = Marca & ComboBox3.Value:  L3 = ComboBox3.Value
 
    ' ---&--- Por defecto Todos son Diferente
 
    Divide = ""
    For a = 1 To 7
        If InStr(Marca, Mid$(Letras, a, 1)) = 0 Then
            Divide = Divide & "0"
        Else
            Divide = Divide & "1"  ' le toca 1 tercios
        End If
    Next
 
    ' ---&--- Las Tres Son Iguales Le toca 3 tercios
 
    If L1 = L2 And L2 = L3 Then
       Divide = ""
       For a = 1 To 7
           If Mid(Letras, a, 1) = L1 Then
               Divide = Divide & "3"
           Else
               Divide = Divide & "0"
           End If
       Next
 
    Else ' ---&--- Dos son Iguales
 
                        Rep = ""
        If L1 = L2 Then Rep = L1: Dif = L3
        If L1 = L3 Then Rep = L1: Dif = L2
        If L2 = L3 Then Rep = L2: Dif = L1
 
        If Len(Rep) > 0 Then
            Divide = ""
            For a = 1 To 7
                If Mid(Letras, a, 1) = Rep Then
                   Divide = Divide & "2"    ' le toca 2 tercios
                Else
                    If Mid$(Letras, a, 1) = Dif Then
                        Divide = Divide & "1"  ' le toca 1 tercio
                    Else
                        Divide = Divide & "0"
                    End If
                End If
           Next
       End If
    End If
 
    ' ---&--- Pone las cantidades
 
    For Col = 6 To 12
        If InStr(Marca, Cells(1, Col)) > 0 Then
            Cells(Fila, Col) = (TextBox1.Value / 3) * Val(Mid$(Divide, Col - 5, 1))
        Else
            Cells(Fila, Col) = 0
        End If
    Next
End Sub
 
' </> ----------------------------------------------------------- </>
' </> ---&---  FIN MACRO
' </> ----------------------------------------------------------- </>

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 17
Ha disminuido su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Asignar valor de combobox en columnas diferentes dependiendo de la opción

Publicado por Rebeca (8 intervenciones) el 25/01/2019 16:23:20
Muchas muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.066
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Asignar valor de combobox en columnas diferentes dependiendo de la opción

Publicado por Antoni Masana (1416 intervenciones) el 26/01/2019 02:06:39
Se puede hacer mas simple

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
' </> ----------------------------------------------------------- </>
' </> ---&---  Inicializacion
' </> ----------------------------------------------------------- </>
 
Private Sub UserForm_Initialize()
    Dim Letras As String, a As Integer
    Letras = "abcdefg"
    For a = 1 To 7
        ComboBox1.AddItem Mid$(Letras, a, 1)
        ComboBox2.AddItem Mid$(Letras, a, 1)
        ComboBox3.AddItem Mid$(Letras, a, 1)
    Next
    ComboBox1.ListIndex = 0
    ComboBox2.ListIndex = 0
    ComboBox3.ListIndex = 0
End Sub
 
' </> ----------------------------------------------------------- </>
' </> ---&---  BOTON - Aceptar
' </> ----------------------------------------------------------- </>
 
Private Sub aceptar_Click()
    Dim Fila As Long, Letras As String, Col as Integer
    Dim a As Integer, Marca As String
 
    Letras = "abcdefg"
 
    Fila = 3
    While Cells(Fila, 1) <> ""
        Fila = Fila + 1
    Wend
 
    Hoja1.Cells(Fila, 1) = ComboBox1.Value
    Hoja1.Cells(Fila, 2) = ComboBox2.Value
    Hoja1.Cells(Fila, 3) = ComboBox3.Value
    Hoja1.Cells(Fila, 4) = TextBox1.Value
 
    Marca = ""
    Marca = Marca & ComboBox1.Value
    Marca = Marca & ComboBox2.Value
    Marca = Marca & ComboBox3.Value
 
    ' ---&--- Pone las cantidades a CERO
 
    For Col = 6 To 12
        Cells(Fila, Col) = 0
    Next
 
    ' ---&--- Pone los 3 tercios en su sitio
 
    For a = 1 To 3
        Col = 5 + InStr(Letras, Mid$(Marca, a, 1))
        Cells(Fila, Col) = Cells(Fila, Col) + (TextBox1.Value / 3)
    Next
End Sub
 
' </> ----------------------------------------------------------- </>
' </> ---&---  FIN MACRO
' </> ----------------------------------------------------------- </>


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar