Ubicación pegada basada en la entrada del usuario
Tengo un fragmento de código simple que copia un valor de un archivo de trabajo a otro. Quiero pegar el valor en una ubicación diferente según la entrada del usuario. Por ejemplo, si el usuario ingresa Q1, la ubicación para pegar será H5, si ingresa Q2, será I5, si ingresa Q3, será J5, y si ingresa Q4, será K5. Podría agregar cuatro instrucciones if y copiar todo el código debajo de ellas, pero debe haber una manera más simple.
“`Sub prueba()
Dim wb As Workbook
Set wb = Workbooks.Open("ruta del archivo de trabajo")
Dim myValue As Variant
myValue = InputBox("Elige el trimestre")
Dim v As Variant, v1 As Variant
Dim i As String
i = myValue
v = wb.Worksheets("Master").Range("J6").Value
ThisWorkbook.Worksheets("Hoja 1").Range("H5").Value = v 'si es Q1 entonces H5, Q2 I, Q3 J, Q4 K
v1 = wb.Worksheets("Master").Range("J7").Value
ThisWorkbook.Worksheets("Hoja 2").Range("H5").Value = v1 'si es Q1 entonces H5, Q2 I, Q3 J, Q4 K“`
davy.ai
Sub prueba()
Dim wb As Workbook
Set wb = Workbooks.Open(“ruta del archivo”)
Dim myValue As Variant
myValue = InputBox(“Elige el trimestre”)
Dim v As Variant, v1 As Variant
Dim i As String
Set i = myValue
Select Case i
Case “Q1”
ThisWorkbook.Worksheets(“Hoja 1”).Range(“H5”).Value = wb.Worksheets(“Maestro”).Range(“J6”).Value
ThisWorkbook.Worksheets(“Hoja 2”).Range(“H5”).Value = wb.Worksheets(“Maestro”).Range(“J7”).Value
Case “Q2”
ThisWorkbook.Worksheets(“Hoja 1”).Range(“I5”).Value = wb.Worksheets(“Maestro”).Range(“J6”).Value
ThisWorkbook.Worksheets(“Hoja 2”).Range(“I5”).Value = wb.Worksheets(“Maestro”).Range(“J7”).Value
Case “Q3”
ThisWorkbook.Worksheets(“Hoja 1”).Range(“J5”).Value = wb.Worksheets(“Maestro”).Range(“J6”).Value
ThisWorkbook.Worksheets(“Hoja 2”).Range(“J5”).Value = wb.Worksheets(“Maestro”).Range(“J7”).Value
Case “Q4”
ThisWorkbook.Worksheets(“Hoja 1”).Range(“K5”).Value = wb.Worksheets(“Maestro”).Range(“J6”).Value
ThisWorkbook.Worksheets(“Hoja 2”).Range(“K5”).Value = wb.Worksheets(“Maestro”).Range(“J7”).Value
Case Else
MsgBox “Valor no válido”
End Select
End Sub
El código utiliza una declaración Select Case en lugar de múltiples instrucciones if para determinar la ubicación donde pegar el valor según la entrada del usuario. Los diferentes casos representan los diferentes trimestres (Q1, Q2, Q3 y Q4), y dentro de cada caso, se selecciona la celda correspondiente y se pega el valor. Si el usuario ingresa un valor no válido, se muestra un mensaje utilizando la función MsgBox.