Bloqueo variable de celdas

Voy a preguntarte algo que no sé si yo tengo mucha imaginación.
Mi situación es la siguiente:
Tengo todas las celdas bloqueadas excepto el rango (B2:D5). En la celda E2 tengo una fórmula que me diga si B2, C2 y D2 tienen valores correctos, es decir:
en E2: =SI(Y(B2>0;C2>0;D2>0);"OK";"ERROR"). Lo mismo en las celdas E3, E4 y E5 (ésto sólo lo quiero para saber si en una fila hemos terminado de poner datos). Entonces lo que quiero es que sólo esté desbloqueada la fila en la que estoy escribiendo y, cuando estén rellenadas las 3 celdas de datos, entonces me permita acceder a la siguiente fila, es decir, a B3, C3 y D3, y cuando estas celdas tengan datos, entonces se desbloquee la siguiente fila (B4, C4 y D4), y así,...
¿Es posible? He intentado redactarlo muy claro! Gracias por leerme de antemano!

1 respuesta

Respuesta
1
Yo he creado un botón y le he puesto el código:
Private Sub CommandButton1_Click()
x = 2
y = 2
Do While Cells(y, x) <> ""
x = x + 1
If x = 5 Then
x = 2
y = y + 1
End If
Loop
Do
da = InputBox("introducir datos")
Cells(y, x) = da
x = x + 1
If x = 5 Then
x = 2
y = y + 1
End If
Loop While da <> ""
End Sub
Pruébalo
Seguro que es una gran solución lo que has pensado pero... yo es que no estoy muy familiarizado con las macros. He abierto el Visual Basic y he copiado lo que me has dicho en la hoja en la que estoy probándolo pero no sé donde se ponen los datos ni tampoco insertar un nuevo botón de una macro...
Ah por cierto! Y una forma rápida de: si A1>0, que B1 esté bloqueada, sino, desbloqueada. ¿Podrías ayudarme?
Gracias. Un saludo!
Posteame tu e-mail y yo ten envío el mio, para intercam, bio de ficheros...
Así te apaño el fichero con tus necesidades (absoluta discreción con los ficheros)
OK. [email protected]. Estamos en contacto.
Te he enviado el fichero con las macros correspondientes que resumo:
En la hoja Plantilla he puesto:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
x = 2
y = 2
Do While Cells(y, x) <> ""
x = x + 1
If x = 5 Then
x = 2
y = y + 1
End If
If y = 6 Then End
Loop
Do
da = InputBox("introducir datos")
Cells(y, x) = da
x = x + 1
If x = 5 Then
x = 2
y = y + 1
End If
Do While Cells(y, x) <> ""
x = x + 1
If x = 5 Then
x = 2
y = y + 1
End If
Loop
If y = 6 Then Exit Do
Loop While da <> ""
End Sub
' --------------------------------------------------
y en la hoja3:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Target.Value = "SI" Then
ActiveSheet.Unprotect Password:="123"
Range("d1").Select
Else
ActiveSheet.Protect Password:="123"
End If
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas