Case de forma reducida en access mediante macros
Hola y gracias de antemano. Estoy desarrollando un excel, y tengo un problemilla con un case. Esta es la programación que tengo.
Private Sub Guardar_Click()
Dim Msg As String
Dim Resp As String
Msg = "¿Seguro que desea cargar los datos?"
Resp = MsgBox(Msg, vbQuestion + vbYesNo, "CONFIRMACION")
If Resp = vbYes Then
Select Case ComboBox1.ListIndex
Case 0
Select Case ComboBox2.ListIndex
Case 0
Sheets("Datos").Range("D4") = Sheets("Datos").Range("D4") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 1
Sheets("Datos").Range("D5") = Sheets("Datos").Range("D5") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 2
Sheets("Datos").Range("D6") = Sheets("Datos").Range("D6") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
End Select
Case 1
Select Case ComboBox2.ListIndex
Case 0
Sheets("Datos").Range("D18") = Sheets("Datos").Range("D18") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 1
Sheets("Datos").Range("D19") = Sheets("Datos").Range("D19") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 2
Sheets("Datos").Range("D20") = Sheets("Datos").Range("D20") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
End Select
Case 2
Select Case ComboBox2.ListIndex
Case 0
Sheets("Datos").Range("D32") = Sheets("Datos").Range("D32") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 1
Sheets("Datos").Range("D33") = Sheets("Datos").Range("D33") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 2
Sheets("Datos").Range("D34") = Sheets("Datos").Range("D34") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
End Select
End Select
Else
TextBox3 = Empty
End If
End Sub
Lo que ue quiero es que en este caso solo he puesto 3 case, peor tengo muchos más y querría abreviarlo. Como ves las celdas de la hoja también se incrementan una unidad.
¿Cómo puedo hacerlo?
Gracias.
Private Sub Guardar_Click()
Dim Msg As String
Dim Resp As String
Msg = "¿Seguro que desea cargar los datos?"
Resp = MsgBox(Msg, vbQuestion + vbYesNo, "CONFIRMACION")
If Resp = vbYes Then
Select Case ComboBox1.ListIndex
Case 0
Select Case ComboBox2.ListIndex
Case 0
Sheets("Datos").Range("D4") = Sheets("Datos").Range("D4") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 1
Sheets("Datos").Range("D5") = Sheets("Datos").Range("D5") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 2
Sheets("Datos").Range("D6") = Sheets("Datos").Range("D6") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
End Select
Case 1
Select Case ComboBox2.ListIndex
Case 0
Sheets("Datos").Range("D18") = Sheets("Datos").Range("D18") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 1
Sheets("Datos").Range("D19") = Sheets("Datos").Range("D19") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 2
Sheets("Datos").Range("D20") = Sheets("Datos").Range("D20") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
End Select
Case 2
Select Case ComboBox2.ListIndex
Case 0
Sheets("Datos").Range("D32") = Sheets("Datos").Range("D32") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 1
Sheets("Datos").Range("D33") = Sheets("Datos").Range("D33") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
Case 2
Sheets("Datos").Range("D34") = Sheets("Datos").Range("D34") + EntradaMaterial.TextBox3.Value
TextBox3 = Empty
MsgBox ("La operacion se ha realizado correctamente")
End Select
End Select
Else
TextBox3 = Empty
End If
End Sub
Lo que ue quiero es que en este caso solo he puesto 3 case, peor tengo muchos más y querría abreviarlo. Como ves las celdas de la hoja también se incrementan una unidad.
¿Cómo puedo hacerlo?
Gracias.
1 respuesta
Respuesta de xavi -ae soft-
1