{"id":945,"date":"2011-05-18T18:02:31","date_gmt":"2011-05-18T17:02:31","guid":{"rendered":"https:\/\/david.xn--cantn-3ta.com\/blog\/?p=945"},"modified":"2011-11-12T23:17:38","modified_gmt":"2011-11-12T22:17:38","slug":"excel-impedir-que-el-cursor-se-situe-en-celda-bloqueada","status":"publish","type":"post","link":"https:\/\/david.xn--cantn-3ta.com\/blog\/informatica\/excel-impedir-que-el-cursor-se-situe-en-celda-bloqueada\/945\/","title":{"rendered":"Excel: Impedir que el cursor se situe en celda bloqueada"},"content":{"rendered":"<p>En <strong>Excel<\/strong> tenemos la posibilidad de <strong>proteger la hoja<\/strong> (men\u00fa Herramientas->Proteger->Proteger hoja&#8230;). Si aceptamos los valores predeterminados del cuadro de di\u00e1logo, cada vez que intentemos <strong>editar una celda bloqueada<\/strong>, se mostrar\u00e1 un mensaje advirtiendo que <strong>la celda que se intenta modificar es de s\u00f3lo lectura<\/strong>.<\/p>\n<p><!--more--><\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" style=\"cursor: url(https:\/\/david.xn--cantn-3ta.com\/blog\/wp-content\/js\/magnify.cur), -moz-zoom-in;\" src=\"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-content\/uploads\/excel_celdasprotegidas.gif\" title=\"Mensaje en celdas bloqueadas\" width=\"500\" height=\"106\" border=\"0\" data-magnifyto=\"652\" class=\"magnify\" \/><\/p>\n<p>Aunque tambi\u00e9n es posible, seg\u00fan la configuraci\u00f3n de protecci\u00f3n establecida, impedir situarnos en la celda sin mostrar mensaje, con el siguiente procedimiento vamos un paso adelante, ya que, adem\u00e1s, <strong>situaremos el cursor en la celda editable m\u00e1s cercana<\/strong>. Partiendo del origen de la selecci\u00f3n <strong>se busca la siguiente celda no bloqueada para situar el cursor en ella<\/strong>. Debe colocarse \u00edntegramente en el m\u00f3dulo de la hoja a la que debe afectar.<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" style=\"cursor: url(https:\/\/david.xn--cantn-3ta.com\/blog\/wp-content\/js\/magnify.cur), -moz-zoom-in;\" src=\"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-content\/uploads\/excel_editorvba.gif\" title=\"Editor VBA\" width=\"500\" height=\"334\" border=\"0\" data-magnifyto=\"931\" class=\"magnify\" \/><\/p>\n<p><code class=\"vb\"><\/p>\n<pre>\r\n<font color=\"#008000\">'---------------------------------------------------------------------------------------<\/font>\r\n<font color=\"#008000\">' Procedimiento : Worksheet_SelectionChange<\/font>\r\n<font color=\"#008000\">' Autor         : \u00a9David (www.davidcanton.com)<\/font>\r\n<font color=\"#008000\">' Fecha         : 28\/04\/2011<\/font>\r\n<font color=\"#008000\">' Finalidad     : Impedir que se posicione el cursor en una celda bloqueada.<\/font>\r\n<font color=\"#008000\">' Par\u00e1metros    : --&gt;Target: La selecci\u00f3n.<\/font>\r\n<font color=\"#008000\">'---------------------------------------------------------------------------------------<\/font>\r\n<font color=\"#008000\">'<\/font>\r\n\r\n<font color=\"#0000A0\">Private<\/font> <font color=\"#0000A0\">Sub<\/font> Worksheet_SelectionChange(<font color=\"#0000A0\">ByVal<\/font> Target <font color=\"#0000A0\">As<\/font> Range)\r\n<font color=\"#008000\">'Tambi\u00e9n podr\u00eda afectar a todo el libro en vez de s\u00f3lo a una hoja.<\/font>\r\n<font color=\"#008000\">'En ese caso, habr\u00eda que incluirlo en el m\u00f3dulo \"ThisWorkbook\"<\/font> \r\n<font color=\"#008000\">'y el procedimiento ser\u00eda: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)<\/font>\r\n    \r\n<font color=\"#008000\">'Definici\u00f3n del \u00e1rea de trabajo<\/font>\r\n<font color=\"#008000\">'Const FILAPRIMERA = 3<\/font>\r\n<font color=\"#0000A0\">Const<\/font> FILAULTIMA = 34\r\n<font color=\"#0000A0\">Const<\/font> COLUMNAPRIMERA = 3\r\n<font color=\"#0000A0\">Const<\/font> COLUMNAULTIMA = 6\r\n   \r\n    <font color=\"#0000A0\">Dim<\/font> iFila <font color=\"#0000A0\">As<\/font> <font color=\"#0000A0\">Integer<\/font>, iColumna <font color=\"#0000A0\">As<\/font> <font color=\"#0000A0\">Integer<\/font>\r\n    <font color=\"#0000A0\">Dim<\/font> rngCelda <font color=\"#0000A0\">As<\/font> Range\r\n\r\n<font color=\"#0000A0\">On<\/font> <font color=\"#0000A0\">Error<\/font> <font color=\"#0000A0\">GoTo<\/font> Worksheet_SelectionChange_Error\r\n\r\n<font color=\"#008000\">    'Si se selecciona un \u00e1rea desbloqueada<\/font>\r\n<font color=\"#008000\">    'o si la hoja no est\u00e1 protegida... No hacer nada<\/font>\r\n    <font color=\"#0000A0\">If Not<\/font> Target.Locked <font color=\"#0000A0\">Or Not<\/font> Application.ActiveSheet.ProtectContents <font color=\"#0000A0\">Then<\/font> <font color=\"#0000A0\">Exit<\/font> <font color=\"#0000A0\">Sub<\/font>\r\n\r\n<font color=\"#008000\">    'Si estamos aqu\u00ed es porque hemos seleccionado una o varias celdas bloqueadas<\/font>\r\n    <font color=\"#0000A0\">If<\/font> Target.Row &gt; FILAULTIMA <font color=\"#0000A0\">Or<\/font> (Target.Row = FILAULTIMA <font color=\"#0000A0\">And<\/font> Target.Column &gt; COLUMNAULTIMA) <font color=\"#0000A0\">Then<\/font>\r\n    <font color=\"#008000\">    'Si estamos por debajo de la \u00faltima fila<\/font>\r\n    <font color=\"#008000\">    'o a la derecha de la \u00faltima columna y en la \u00faltima fila...<\/font>\r\n        <font color=\"#0000A0\">Set<\/font> rngCelda = Cells(FILAULTIMA, COLUMNAULTIMA)\r\n        rngCelda.Select\r\n    <font color=\"#0000A0\">Else<\/font>\r\n    <font color=\"#008000\">    'La situaci\u00f3n m\u00e1s ordinaria:<\/font>\r\n    <font color=\"#008000\">    'Hemos seleccionado, al menos, una celda bloqueada<\/font>\r\n    <font color=\"#008000\">    'situada en el \u00e1rea de trabajo: antes de Cells(FILAULTIMA, COLUMNAULTIMA)<\/font>\r\n        iColumna = Target.Column\r\n        <font color=\"#0000A0\">For<\/font> iFila = Target.Row <font color=\"#0000A0\">To<\/font> FILAULTIMA\r\n            <font color=\"#0000A0\">Do<\/font> <font color=\"#0000A0\">While<\/font> iColumna &lt;= COLUMNAULTIMA\r\n                <font color=\"#0000A0\">Set<\/font> rngCelda = Cells(iFila, iColumna)\r\n                <font color=\"#0000A0\">If<\/font> <font color=\"#0000A0\">Not<\/font> rngCelda.Locked <font color=\"#0000A0\">Then<\/font>\r\n                    rngCelda.Select\r\n                    <font color=\"#0000A0\">Exit<\/font> <font color=\"#0000A0\">For<\/font>\r\n                <font color=\"#0000A0\">End<\/font> <font color=\"#0000A0\">If<\/font>\r\n                iColumna = iColumna + 1\r\n            Loop\r\n            iColumna = COLUMNAPRIMERA\r\n        <font color=\"#0000A0\">Next<\/font> iFila\r\n    <font color=\"#0000A0\">End<\/font> <font color=\"#0000A0\">If<\/font>\r\n\r\nWorksheet_SelectionChange_Salida:\r\n<font color=\"#0000A0\">On<\/font> <font color=\"#0000A0\">Error<\/font> <font color=\"#0000A0\">Resume<\/font> <font color=\"#0000A0\">Next<\/font>\r\n    <font color=\"#0000A0\">Set<\/font> rngCelda = <font color=\"#0000A0\">Nothing<\/font>\r\n    <font color=\"#0000A0\">Exit<\/font> <font color=\"#0000A0\">Sub<\/font>\r\n\r\nWorksheet_SelectionChange_Error:\r\n    MsgBox \"Error \" &amp; Err.Number &amp; \": \" &amp; Err.Description &amp; Chr(13) &amp; Chr(10) &amp; \"Worksheet_SelectionChange\"\r\n    <font color=\"#0000A0\">Resume<\/font> Worksheet_SelectionChange_Salida\r\n\r\n<font color=\"#0000A0\">End<\/font> <font color=\"#0000A0\">Sub<\/font><\/pre>\n<p><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En Excel tenemos la posibilidad de proteger la hoja (men\u00fa Herramientas->Proteger->Proteger hoja&#8230;). Si aceptamos los valores predeterminados del cuadro de di\u00e1logo, cada vez que intentemos editar una celda bloqueada, se mostrar\u00e1 un mensaje advirtiendo que la celda que se intenta modificar es de s\u00f3lo lectura.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[65,80],"class_list":["post-945","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-microsoft-excel","tag-vba"],"_links":{"self":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/posts\/945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/comments?post=945"}],"version-history":[{"count":0,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/posts\/945\/revisions"}],"wp:attachment":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/media?parent=945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/categories?post=945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/tags?post=945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}