Seleccionar un item de un combobox y realizar una multiplicación

Tengo una hoja de calculo donde hay 2 columnas con datos numéricos la idea es que cuando seleccione un dato en mi caso particular el de menor valor me realice una multiplicación ejemplo columna D(precio1) columna E(precio2) columna F(cantidad)con un combobox selecciono en mi caso la columna que tenga el menor valor y lo multiplico con la columna "cantidad" todo esto realizado en un formulario envío el código de lo que e tratado de hacer y no me dan los resultados esperados quedando muy agradecido con tan maravilloso foro de antemano muchas gracias

Public pp As Long
Public up As Long
Private Sub ComboBox1_Change()
'Dim Fila As Integer
'Dim Final As Integer
'
'If ComboBox1.Text = "" Then
'    Me.TextBox1 = ""
'    Me.TextBox3 = ""
'    Me.TextBox4 = ""
'End If
'
'Final = GetUltimoR(Hoja2)
'
'    For Fila = 2 To Final
'        If ComboBox1.Text = Hoja2.Cells(Fila, 1) Then
'            Me.txt_Nombre = Hoja2.Cells(Fila, 2)
'            Me.txt_Descrip = Hoja2.Cells(Fila, 3)
'            Exit For
'        End If
'    Next
End Sub
Private Sub ComboBox1_Enter()
Dim Fila As Integer
Dim Final As Integer
Dim Lista As String
For Fila = 1 To ComboBox1.ListCount
    ComboBox1.RemoveItem 0
Next Fila
    Final = GetUltimoR(Sheets(Hoja3.Name))
    For Fila = 2 To Final
        Lista = Worksheets(Hoja3.Name).Cells(Fila, 2)
        ComboBox1.AddItem (Lista)
    Next
End Sub
Private Sub CommandButton1_Click()
Dim X As Long
Dim Fila As Long
Dim Final As Long
'titulo = "Registro de productos"
  Final = GetNuevoR(Hoja3)
X = ActiveSheet.Range("A1").End(xlDown).Row + 1
        Cells(X, 1) = TextBox1.Text
        Cells(X, 2) = ComboBox1.List
        Cells(X, 10) = ComboBox4.List
        For X = 2 To Range("A" & Rows.Count).End(xlUp).Row
        pp = Cells(X, 4)
        up = Cells(X, 5)
        If pp > up Then
        pp = Cells(X, 4) * Cells(X, 6)
        Else
        up = Cells(X, 5) * Cells(X, 6)
'        If IsNumeric(Cells(X, 4)) And IsNumeric(Cells(X, 6)) Then
'            Cells(X, 10) = Cells(X, 4) * Cells(X, 6)
'            Else
'            Cells(X, 10) = Cells(X, 5) * Cells(X, 6)
'        End If
    End If
Next
End Sub
Private Sub UserForm_Initialize()
'Sheets(Hoja3.Name).Select
'
'ComboBox4.List = Array("Precio1", "Precio2")
' KeyAscii = 0
With Me.ComboBox4
.AddItem "Precio1"
.AddItem "Precio2"
End With
End Sub

1 respuesta

Respuesta
1

Puedes poner una imagen de lo que tienes en tu hoja.

No entiendo tu código.

Después de realizar la multiplicación. ¿En dónde quieres el resultado?

Explica con ejemplos, SI EJEMPLOS, es difícil entender qué necesitas.

SIN EJEMPLOS, es difícil de entender lo que necesitas.

Te voy a ayudar con un ejemplo, pero tú deberás desarrollar un ejemplo de lo que quieres.

Suponiendo que tengo estos datos en la hoja3:

Y quiero poner en la columna G el resultado de multiplicar el precio por la cantidad.

Tomar el precio de la columna D, si el comobox4 dice "Precio1".

Tomar el precio de la columna E, si el comobox4 dice "Precio2".

El código sería el siguiente:

Private Sub CommandButton1_Click()
  Dim i As Long
  Dim col As String
  '
  For i = 2 To Hoja3.Range("F" & Rows.Count).End(3).Row
    If ComboBox4.Value = "Precio1" Then col = "D" Else col = "E"
    Range("G" & i).Value = Cells(i, col).Value * Range("F" & i).Value
  Next
End Sub
Private Sub UserForm_Activate()
  ComboBox4. AddItem "Precio1"
  ComboBox4. AddItem "Precio2"
End Sub

Podría pasarme el día entero haciendo códigos tratando de adivinar qué necesitas.

Mejor explica qué tienes y qué quieres de resultado. Recuerda, nos estás pidiendo ayuda, así que ayúdanos proporcionando toda la información relevante para ello. Aunque te parezca obvio (solamente es obvio, para ti, porque estás viendo y conoces tus datos).

Si señor tiene toda la razón!------ Le adjunto a medida de ejemplos lo que requiero;

El control código y el combobox nombre son datos que cargo de una hoja base la que tiene la información mi idea es cuando seleccione combo precio la cual solo tiene 2 item precio1 y precio2 cuyos valores están en columnas diferentes de otra hoja y cuando sea seleccionado uno de los item este se multiplique con el valor del control cantidad el valor sea arrojado al control total y así pueda grabar los datos con el botón.

Me disculpo por ir modificando código pero es la enseñanza que le lleva al conocimiento de acuerdo a lo enviado por usted estuve tratando de añadirlo a mi código pero me sale error de tipo le adjunto el código mio y aclarar mi falla de acuerdo a su experticia gracias

Option Explicit
Private Sub ComboBox1_Change()
Dim Fila As Integer
Dim Final As Integer
Me.ComboBox1.BackColor = &H80000005
If ComboBox1.Text = "" Then
    LimpiarControles
End If
    Fila = 2
    Do While Hoja2.Cells(Fila, 1) <> "" 'And Hoja.Cells(Fila, 1) <> ""
        Fila = Fila + 1
    Loop
    Final = Fila - 1
    For Fila = 2 To Final
        If ComboBox1.Text = Hoja2.Cells(Fila, 2) Then
           ' Me.lbl_Comprb.Caption = Hoja7.Range("A2").Value + 1
           ' Me.txt_FechaIng = Date
           ' Me.txt_Nombre = Hoja2.Cells(Fila, 2)
               Me.TextBox1 = Hoja2.Cells(Fila, 1)
           ' Me.txt_CostoU.Text = Format(Hoja2.Cells(Fila, 4), "#,##0.00")
            'Me.txt_PrecioV.Text = Format(Hoja2.Cells(Fila, 5), "#,##0.00")
            Exit For
        End If
    Next
End Sub
Private Sub ComboBox1_Enter()
Dim Fila As Integer
Dim Final As Integer
Dim Lista As String
For Fila = 1 To ComboBox1.ListCount
    ComboBox1.RemoveItem 0
Next Fila
    Final = GetUltimoR(Hoja2)
    For Fila = 2 To Final
        Lista = Hoja2.Cells(Fila, 2) 'prueba cambio a 1
        ComboBox1.AddItem (Lista)
    Next
End Sub
Private Sub CommandButton1_Click()
End Sub
Private Sub UserForm_Initialize()
'With Sheets(Hoja2.Name)
'   ComboBox1.List = .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row).Value
'   End With
'ComboBox1.MaxLength = Hoja2.Range("B2").Value
End Sub
 Private Sub LimpiarControles()
        Me.ComboBox1.Text = ""
        Me.TextBox1 = ""
End Sub

En la hoja de tu imagen no hay datos.

Si tuviste oportunidad de ver mi ejemplo, puse datos.

Observa cómo debes poner un ejemplo:


Esto que escribes:

El control código y el combobox nombre son datos que cargo de una hoja base la que tiene la información mi idea es cuando seleccione combo precio la cual solo tiene 2 item precio1 y precio2 cuyos valores están en columnas diferentes de otra hoja y cuando sea seleccionado uno de los item este se multiplique con el valor del control cantidad el valor sea arrojado al control total y así pueda grabar los datos con el botón.

No tiene datos de ejemplo. Tus ejemplos deben ir acompañados de valores. Los valores deben estar en las imágenes.

Mejor explica qué necesitas, pero con ejemplos. Insisto, si no pones ejemplos claros, es muy difícil de entender qué quieres.

No me expliques con código. Solamente explica con imágenes.

Disculpándome por no hacerme entender espero sea más claro en mis imágenes

Te ayudo con TODO el código para calcular el Total.

Crea un userform nuevo y prueba el código. Pon TODO el código en el userform. Debes poner TODO EL CÓDIGO.

Entiendo que quieres aprender, pero la mejor práctica es que lo hagas en un formulario nuevo, ya que entiendas el código, lo puedes adaptar a tu userform.

Option Explicit
'
Dim sh As Worksheet
'
Private Sub ComboBox1_Change()  'Producto
  Dim i As Long
  '
  TextBox1.Value = ""                       'código
  TextBox2.Value = ""                       'cantidad
  TextBox3.Value = ""                       'tipo
  TextBox4.Value = ""                       'total
  If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Then Exit Sub
  '
  i = ComboBox1.ListIndex + 2
  TextBox1.Value = sh.Range("A" & i).Value  'código
  TextBox3.Value = sh.Range("C" & i).Value  'tipo
End Sub
'
Private Sub ComboBox2_Change()  'Precio
  Call Calcular_Total
End Sub
'
Private Sub TextBox2_Change()   'Cantidad
  Call Calcular_Total
End Sub
'
Sub Calcular_Total()
  Dim i As Long
  Dim col As String
  '
  TextBox4.Value = ""
  If TextBox2.Value = "" Then Exit Sub                              'valida cantidad
  If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Then Exit Sub 'valida producto
  If ComboBox2.Value = "Precio1" Then col = "D" Else col = "E"      'valida precio
  i = ComboBox1.ListIndex + 2
  'total         = Cantidad       * el precio
  TextBox4.Value = TextBox2.Value * sh.Cells(i, col)
End Sub
'
Private Sub UserForm_Activate()
  Set sh = Sheets("Entradas")
  'combo2 con precio1 y precio2
  ComboBox2. AddItem "Precio1"
  ComboBox2. AddItem "Precio2"
  '
  'combo1 con los nombres de los productos
  ComboBox1.List = sh.Range("B2", sh.Range("B" & Rows.Count).End(3)).Value
End Sub

Intenta pasar los datos a al hoja3. Si tienes dificultades, crea una nueva pregunta y con gusto te ayudo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas