Código VBA para guardar en variable numero de veces que se repite un dato

Tengo un formulario creado que alimenta una base de datos, el usuario introduce un código de 3 cifras en una parte de ese formulario para luego grabar los datos, ese código de 3 cifras se puede repetir, por ejemplo introdujo el numero 310 en el textbox, y se grabaron los datos después de dar click en el botón guardar, luego puede que en algún momento se deban grabar datos con ese mismo numero 310, lo que quiero es que al momento de pulsar guardar en ese formulario, salga un mensaje diciendo ya ingresaste el código 310 "1" veces, ¿deseas crear 310 (2)?, y si digo si, que el textbox ya no sea 310, si no 310(2) . Y por ejemplo si ya existe el 310 (2), el mensaje diga ya ingresaste el código 310 "2" veces deseas crear 310 (3), ¿y así si ya existe el dato 310 (3) diga ya ingresaste el código 310 "3" veces deseas crear 301 (4)? Y así sucesivamente. Muchas gracias espero haberme hecho entender.

Tengo algo así:

Door2 = Me.Door.Value
prueba = WorksheetFunction.CountIf(Worksheets("Operation Data").Range("D:D"), Door2)
If prueba <> 0 Then
Question1 = MsgBox("This door was already worked once, maybe " & Door2 & " (" & prueba + 1& & ")", vbYesNo + vbQuestion, "Changing Door Number")
If Question = vbYes Then
Door.Text = Door2 & " (" & prueba + 1& & ")"

No he podido lograrlo, al parecer algo esta mal en la variable prueba, intento concatenar Door2&"*" pero sale error.

1 respuesta

Respuesta

No sé si en la celda quieras guardar

Opción 1
310
310
310
Opción 2
310
310 (2)
310 (3)

---

Te paso un ejemplo para guardar los datos de la segunda opción.

Private Sub CommandButton1_Click()
  'botón guardar
  '
  Dim sh As Worksheet
  Dim conteo As Long
  Dim resp As VbMsgBoxResult
  Dim sTime As String
  '
  Set sh = Sheets("Operation Data")
  With Door
    If .Value = "" Then
      MsgBox "Captura Door"
      .SetFocus
      Exit Sub
    End If
    '
    conteo = WorksheetFunction.CountIf(sh.Range("D:D"), .Value) + _
             WorksheetFunction.CountIf(sh.Range("D:D"), .Value & " (*")
    If conteo > 0 Then
      sTime = conteo & " time" & IIf(conteo > 1, "s", "")
      conteo = conteo + 1
      resp = MsgBox("This door was already worked " & sTime & vbCr & _
            "Do you want to create 310 (" & conteo & ") ?", vbYesNo + vbQuestion, "Changing Door Number")
      If resp = vbNo Then
        Exit Sub
      End If
      .Value = .Value & " (" & conteo & ")"
    End If
    'continuar con la grabación de los datos
    'pongo un ejemplo
    sh.Range("D" & Rows.Count).End(3)(2).Value = .Value
    'continuar con la grabación de los datos
  End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas