Excel - Range variable para función vba

   
Vista:

Range variable para función vba

Publicado por Roberto (12 intervenciones) el 16/06/2016 13:53:24
Hola a todos,
En primer lugar enhorabuena por el trabajo diario.

Vengo con una duda de Excel. Estoy intentando crear un listado de paradas de máquina y para ello he utilizado un código VBA que sería un Botón al que si pulso registra la hora exacta, y si vuelvo a pulsar se actualiza el dato.
Esto me sirve para que el operario no tenga que introducir manualmente la hora, pero no se cómo hacer para que cada vez que pulse en el botón, el dato se quede registrado en una celda diferente.

La idea sería trabajar con dos columnas (Inicio parada, fin parada)
El botón tiene las mismas posiciones (Iniciar y Parar)

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
Sub Boton()
  With ActiveSheet
      If .Shapes("Forma").TextFrame.Characters.Text = "Iniciar" Then
          .Shapes("Forma").TextFrame.Characters.Text = "Parar" 'Texto
          .Shapes("Forma").Fill.ForeColor.RGB = RGB(255, 0, 0) 'Color
          .Shapes("Forma").TextFrame.Characters.Font.ColorIndex = 2 'Fuente
      Call Reloj
      Else
          .Shapes("Forma").TextFrame.Characters.Text = "Iniciar"
          .Shapes("Forma").Fill.ForeColor.RGB = RGB(153, 204, 0)
          .Shapes("Forma").TextFrame.Characters.Font.ColorIndex = 1
      End If
  End With
End Sub
 
 
 
Sub Reloj()
 
  If ActiveSheet.Shapes("Forma").TextFrame.Characters.Text = "Parar" Then
    Range("A1") = Now
    Application.OnTime Now + TimeValue("00:00:01"), "Reloj"
 
  End If
 
End Sub

No se cómo decirle al código que el valor A1 donde está copiando cada vez la hora pueda ser dinámico y de la manera que os he contado. Que cuando pulse Iniciar me copie el dato en A1 y cuando pulse parar en B1, y las siguientes veces en A2, B2; A3,B3...

Muchas gracias de antemano.
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 GERARDO

Range variable para función vba

Publicado por GERARDO (3 intervenciones) el 16/06/2016 15:04:34
Hola

Solo agrega la siguiente linea

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ActiveSheet.Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).Value = Now
 
Sub Boton()
 
  With ActiveSheet
      If .Shapes("Rectángulo redondeado 1").TextFrame.Characters.Text = "Iniciar" Then
        .Shapes("Rectángulo redondeado 1").TextFrame.Characters.Text = "Parar" 'Texto
        .Shapes("Rectángulo redondeado 1").Fill.ForeColor.RGB = RGB(255, 0, 0) 'Color
        .Shapes("Rectángulo redondeado 1").TextFrame.Characters.Font.ColorIndex = 2 'Fuente
 
            ActiveSheet.Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).Value = Now
      Else
        .Shapes("Rectángulo redondeado 1").TextFrame.Characters.Text = "Iniciar"
        .Shapes("Rectángulo redondeado 1").Fill.ForeColor.RGB = RGB(153, 204, 0)
        .Shapes("Rectángulo redondeado 1").TextFrame.Characters.Font.ColorIndex = 1
 
            ActiveSheet.Range("b" & ActiveSheet.UsedRange.Rows.Count).Value = Now
      End If
  End With
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
2
Comentar

Range variable para función vba

Publicado por Roberto (12 intervenciones) el 17/06/2016 09:25:15
Lo he añadido pero me dice que el procedimiento externo no es válido. ¿A qué puede ser debido?

'Muchas gracias por tu respuesta!
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 GERARDO

Range variable para función vba

Publicado por GERARDO (3 intervenciones) el 17/06/2016 14:07:40
Hola

Lo siento es error mio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Boton()
 
  With ActiveSheet
      If .Shapes("Forma").TextFrame.Characters.Text = "Iniciar" Then
        .Shapes("Forma").TextFrame.Characters.Text = "Parar" 'Texto
        .Shapes("Forma").Fill.ForeColor.RGB = RGB(255, 0, 0) 'Color
        .Shapes("Forma").TextFrame.Characters.Font.ColorIndex = 2 'Fuente
 
            ActiveSheet.Range("a" & ActiveSheet.UsedRange.Rows.Count + 1).Value = Now
      Else
        .Shapes("Forma").TextFrame.Characters.Text = "Iniciar"
        .Shapes("Forma").Fill.ForeColor.RGB = RGB(153, 204, 0)
        .Shapes("Forma").TextFrame.Characters.Font.ColorIndex = 1
 
            ActiveSheet.Range("b" & ActiveSheet.UsedRange.Rows.Count).Value = Now
      End If
  End With
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

Range variable para función vba

Publicado por Roberto (12 intervenciones) el 22/06/2016 13:03:06
Muchas gracias, me funciona a la perfección :D
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