Visual Basic para Aplicaciones - Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por Michele (1 intervención) el 03/11/2019 16:46:24
Hola a todos, estoy aquí porque necesito ayuda para que esta macro funcione. En primer lugar, tengo que decir que tengo un nivel muy bajo de conocimiento de VBA, y lo que he hecho hasta ahora lo encontré en la red y lo modifiqué para usarlo para mis necesidades.

En la hoja "HOME" tengo una tabla de entrada de datos, con siete celdas para completar: Data, Account, Bank, Operazione, Dare, Avere, Saldo (soy Italiano, algunas palabras son en Italiano)

Lo que me gustaría obtener es enviar los datos en una tabla específica a una hoja específica que se declara por el valor de la celda "ACCOUNT" y "BANK".

"ACCOUNT" es un menú desplegable, con las opciones "Utente_1, Utente_2, Utente_3, .. Utente_n
(valores hipotéticamente infinitos de "Utente").

"BANK" es un menú desplegable, con las opciones "Banca_1, Banca_2, Banca_3 ... Banca_n
(valores hipotéticamente infinitos de" BANK ")

Cada hoja "BANK" tiene diferentes tablas formateadas, una para cada "UTENTE". Por ejemplo: Hoja:Banca_1 tienes tablas de :"Utente_1","Utente_2", "Utente_3"........"Utente_N"
Y asi lo mismo la hoja "Banca_2" tienes las mismas tablas formateadas, y lo mismo para todas las hojas.

Escribí una macro que inserta los datos en la hoja establecida, pero no entiendo cómo puedo hacer que la hoja seleccionada sea variable, en función del valor de la celda "BANK" y que la tabla también es variable, en función del valor de la celda "ACCOUNT"

Gracias a todos.

Envío un archivo de ejemplo

https://www.dropbox.com/s/up5p938vcqvaob1/Esempio%20per%20nome%20della%20variabile%20foglio.xlsm?dl=0
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 JESUS DAVID ARIZA ROYETH
Val: 42
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por JESUS DAVID ARIZA ROYETH (22 intervenciones) el 03/11/2019 21:42:13
Ciao Michele tutto va bene? ti lascio la soluzione :

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
Sub InsOper(DATA As Date, ACCOUNT As String, BANK As String, OPERAZIONI As String, DARE As Currency, AVERE As Currency)
 
 
    Dim riga, m As Integer
    Dim v As Variant
 
    riga = 12
 
    'ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Select
    'attempt not working-ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Select'
    m = CDbl(Right(Range("C13").Value, Len(Range("C13").Value) - 6)) + 1
    Worksheets(m).Select
 
 
 
    Do
        riga = riga + 1
         'v = ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Cells(riga, 2).Value
        'attempt not working-v = ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Cells(riga, 2).Value'
        v = Sheets(m).Cells(riga, 2).Value
 
    Loop While Not IsEmpty(v)
 
    'attempt not working-With ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Select'
    With Sheets(m)
 
 
 
 
    .Cells(riga, 2).Value = DATA
    .Cells(riga, 3).Value = ACCOUNT
    .Cells(riga, 4).Value = BANK
    .Cells(riga, 5).Value = OPERAZIONI
    .Cells(riga, 6).Value = DARE
    .Cells(riga, 7).Value = AVERE
 
 
    End With
 
    MsgBox ("Ok! Operazione aggiunta con successo")
 
End Sub
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: 14
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por Michele (6 intervenciones) el 03/11/2019 22:13:30
Hola,
La solución funciona solo para la variable "Bank". Necesitaría comprender también cómo insertar "Account" en la tabla "Utente" correcta.
ahora la variable es solo "Bank" y funciona super bien.
Muchas gracias de verdad
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 JESUS DAVID ARIZA ROYETH
Val: 42
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por JESUS DAVID ARIZA ROYETH (22 intervenciones) el 03/11/2019 22:44:45
ahora sí, no me había fijado el detalle del usuario/utente

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
Dim riga, m, n As Integer
    Dim v As Variant
    riga = 12
    m = CDbl(Right(Range("C13").Value, Len(Range("C13").Value) - 6)) + 1
    n = Right(Range("B13").Value, Len(Range("B13")) - 7)
    Worksheets(m).Select
 
 
    Do
        riga = riga + 1
         'v = ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Cells(riga, 2).Value
        'attempt not working-v = ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Cells(riga, 2).Value'
        v = Sheets(m).Cells(riga, 7 * n - 5).Value
 
    Loop While Not IsEmpty(v)
 
    'attempt not working-With ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Select'
    With Sheets(m)
 
    .Cells(riga, 7 * n - 5).Value = DATA
    .Cells(riga, 7 * n - 4).Value = ACCOUNT
    .Cells(riga, 7 * n - 3).Value = BANK
    .Cells(riga, 7 * n - 2).Value = OPERAZIONI
    .Cells(riga, 7 * n - 1).Value = DARE
    .Cells(riga, 7 * n).Value = AVERE
 
 
    End With
 
    MsgBox ("Ok! Operazione aggiunta con successo")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por Michele (6 intervenciones) el 03/11/2019 22:51:31
Hola
tu eres un genio. Creo que casi lo soluciono, solo que recibo un "error de compilación,"

1
riga = 12

estamos casi al final.

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 JESUS DAVID ARIZA ROYETH
Val: 42
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por JESUS DAVID ARIZA ROYETH (22 intervenciones) el 03/11/2019 23:10:15
Cuál es el tipo de error que te sale? ya que a mí me ejecuta bien
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: 14
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por Michele (6 intervenciones) el 03/11/2019 23:21:01
el debug sale
"error de compilacion
No es válido fuera de una rutina"

1
riga = 12
con el 12 en evidencia

Perdóname si pierdo tu tiempo
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 JESUS DAVID ARIZA ROYETH
Val: 42
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por JESUS DAVID ARIZA ROYETH (22 intervenciones) el 03/11/2019 23:28:44
capisco, recuerda que tenías que agregar el sub que tenías, de todas maneras te dejo subido el archivo
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
Sub InsOper(DATA As Date, ACCOUNT As String, BANK As String, OPERAZIONI As String, DARE As Currency, AVERE As Currency)
Dim riga, m, n As Integer
    Dim v As Variant
    riga = 12
    m = CDbl(Right(Range("C13").Value, Len(Range("C13").Value) - 6)) + 1
    n = Right(Range("B13").Value, Len(Range("B13")) - 7)
    Worksheets(m).Select
 
 
    Do
        riga = riga + 1
         'v = ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Cells(riga, 2).Value
        'attempt not working-v = ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Cells(riga, 2).Value'
        v = Sheets(m).Cells(riga, 7 * n - 5).Value
 
    Loop While Not IsEmpty(v)
 
    'attempt not working-With ThisWorkbook.Sheets(Worksheets("Home").Range("C13").Value).Select'
    With Sheets(m)
 
    .Cells(riga, 7 * n - 5).Value = DATA
    .Cells(riga, 7 * n - 4).Value = ACCOUNT
    .Cells(riga, 7 * n - 3).Value = BANK
    .Cells(riga, 7 * n - 2).Value = OPERAZIONI
    .Cells(riga, 7 * n - 1).Value = DARE
    .Cells(riga, 7 * n).Value = AVERE
 
 
    End With
 
    MsgBox ("Ok! Operazione aggiunta con successo")
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por Michele (6 intervenciones) el 03/11/2019 23:52:50
Hola Genio,
eres un verdadero genio y, como te dije, io todavía estoy en un nivel meo que básico de VBA,
La macro funciona perfectamente y ahora la estudiaré para comprender las funciones y la sintaxis.
No se como decir gracias.

de vez en cuando necesito más ayuda, lo siento mucho pero fuiste un genio, y entonces puede suceder que te lo pida.

Ahora pruebo la macro aumentando el número de "utenti", les haré saber si puedo sin problemas.

Muchisima gracias.
un saludo de Italia y espero que tu maravilloso país supere esta otra prueba por la que está pasando.

Michele
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 JESUS DAVID ARIZA ROYETH
Val: 42
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por JESUS DAVID ARIZA ROYETH (22 intervenciones) el 04/11/2019 00:46:31
ciao michele ti ringrazio molto per la tua risposta, io ho bisogno di migliorare il mio livello d'italiano, se mi puoi aiutare con questo ti ringrazio
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: 14
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por Michele (6 intervenciones) el 04/11/2019 07:25:30
Certo che ti posso aiutare.

Claro que puedo ayudarte,dime cómo y estaría feliz de hacerlo.
Tengo que decir que me parece que puedes ya manejarlo muy bien.

Te he visto colaborar en foros italianos y eres prácticamente experto en todos los lenguajes de programación.
Amigo, no estaba bromeando ayer cuando dije que eres un genio.

p.s.
Quería preguntarte, ¿es posible crear una aplicación a partir de un trabajo de Excel? Una aplicación real, sin onedrive y PowerApps

gracias

Estoy a tu disposición, pídeme ayuda cuando quieras
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 JESUS DAVID ARIZA ROYETH
Val: 42
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por JESUS DAVID ARIZA ROYETH (22 intervenciones) el 04/11/2019 12:50:09
En Excel puedes crear algo parecido a una aplicación, con interfaz gráfica de usuario mediante los formularios que tiene disponible VBA, y además puedes ocultar la hojas de Excel si deseas, y que los datos se ingresen solo mediante formulario, aunque en estos momentos si deseas crear una aplicación para el mundo real te conviene más desarrollarla en la web para que controles tu código, y en vez de un producto sea un servicio o ambas cosas


puoi contattarmi via mail se lo desideri
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: 14
Ha aumentado su posición en 5 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Cómo seleccionar las hojas y las tablas en función del valor de 2 celdas

Publicado por Michele (6 intervenciones) el 08/11/2019 23:06:51
Hola jesus todavia estoy aqui
Traté de usar la macro en otro archivo y aparece el error Range (obviamente porque todavía no entiendo mucho sobre VBA)
Voy a agregar un comentario al código, por favor dígame si mi interpretación es correcta. Muchas gracias

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
Sub InsOper(DATA As Date, ACCOUNT As String, BANK As String, OPERAZIONI As String, DARE As Currency, AVERE As Currency)
Dim riga, m, n As Integer  'Estas son variables con valores enteros sin comas'
    Dim v As Variant 'esta es una variante?
    riga = 12 'el valor de variables riga 12 porque?'
    m = CDbl(Right(Range("C13").Value, Len(Range("C13").Value) - 6)) + 1 'C13 es la celda de la variable m? poreque -6 y *1?'
    n = Right(Range("B13").Value, Len(Range("B13")) - 7) 'es la celda de la variable n? porque -7?'
    Worksheets(m).Select
 
 
    Do
        riga = riga + 1
 
        v = Sheets(m).Cells(riga, 7 * n - 5).Value '¿Por qué esta resta?'
 
    Loop While Not IsEmpty(v)
 
 
    With Sheets(m)
 
    .Cells(riga, 7 * n - 5).Value = DATA 'y estas restas?'
    .Cells(riga, 7 * n - 4).Value = ACCOUNT
    .Cells(riga, 7 * n - 3).Value = BANK
    .Cells(riga, 7 * n - 2).Value = OPERAZIONI
    .Cells(riga, 7 * n - 1).Value = DARE
    .Cells(riga, 7 * n).Value = AVERE
 
 
    End With
 
    MsgBox ("Ok! Operazione aggiunta con successo")
End Sub
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