如何设置Excel在按回车后直接跳至另一个编辑框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置Excel在按回车后直接跳至另一个编辑框相关的知识,希望对你有一定的参考价值。

我们单位编辑了一个表格,里面有很多待添选项和很多已经写好的选项.
现在我编辑时,编辑好了一个格,一按回车,就跳到了下面的一个格,可那往往不是我要添的格啊!!

有什么办法能让我编辑好一个框后,一按回车,就跳到另一个我想编辑的选框么??

好的追加分啊~~~!!
我....我感觉我的要求不高啊~~,就是设置好下次跳到的空位嘛.....我想应该是可以设置的.......哪位高手能帮帮忙?

现在来看3楼的办法真不错,间接解决了我的问题!我特别欣赏这种虽然不知道常规方法但是懂得"曲线救国"的方式!很有趣~~,如果再没有好的回答,分数就是他的了~.

klndicky的回答很专业,但是经过我的反复尝试,并没有实现自动的跳转,不知怎么,代码没有起到任何作用,可以再作一下指点么?另外我希望能够自己设置一下跳转的顺序如输入完B1后跳转到G1然后到K1等等,跳转是没有规律的.有劳您啦~~.

喔~~我突然发现了一个问题,两位的代码都好用,但是所应用的表格中有很多的合并单元格,这直接导致了代码的失效.....比如说,A3-D3之间是经过合并的单元格,在选中此格的时候,显示的是A3,但是我希望跳转到的是下一个B6到F6合并的那个单元格.两位的代码在新的,没有合并单元格的表格中都好用,可一到我的有合并的表格中就失效了,有什么补救办法么?

楼主要求的方法, 我十年前已用, 当然是用VBA
WORKSHEET_CHANGE()的办法 便可以
先假设下次跳到的空位是有规律的

假设最上的几行是信头/表头等, 需编辑的范围是从第5行开始
每行需要编辑的的列号是 A列→C列→G列, 然后是下一行的A列, 依此类推
方法是:
右击(该工作表)工作表标签
选 检视程序代码(V)
对话框左上方的下拉 选 Worksheet
右上方的下拉 选 Change
将代码放在:
Private Sub Worksheet_Change(ByVal Target As Range)
[代码放在这里]
End Sub

代码是:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or Target.Row < 5 Then Exit Sub
Select Case Target.Column
Case 1
If IsEmpty(Target) = True Then
Target.Select
Beep
Else
Target.Offset(0, 2).Select
Beep
End If
Case 3
If IsEmpty(Target) = True Then
Target.Select
Beep
Else
Target.Offset(0,4).Select
Beep
End If
Case 7
If IsEmpty(Target) = True Then
Target.Select
Beep
Else
Target.Offset(1,-6).Select
Beep
End If
End Select
End Sub
然后关闭代码视窗, 完成

以后, 在 A5, 输入回车, 便会跳到C5, 再跳G5, 再跳A6…..
如在A5清除内容后回车, 是不会跳到C5, 仍停在A5

假设跳格的路线是 A3:D3(合并格), B6:F6(合并格), A7, E7:F7(合并格), F10 共5格
在VBA的Array 中, 只需列出最左上的单元格便OK, 即 A3:D3 写成$A$3便可以, 最后的一格 F10, 要重覆一次
全新代码如下(语法及判断方法与前代码完全不同了):
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ABC
xx = Array("$A$3", "$B$6", "$A$7", "$E$7", "$F$10", "$F$10")
For Each x In xx
If Target.Address = x Then
If IsEmpty(Target) Then
Target.Select
Exit Sub
Else
Range(xx(x1 + 1)).Select
Exit Sub
End If
End If
x1 = x1 + 1
Next
ABC:
End Sub
参考技术A 如果表格的重复率高,也就是说表格是规定好的,那有个办法

就是拿一个表格,增加一个sheet,比如说叫做edit
然后,把表格的待填项,一个个和edit的A1-A100这样对应起来
然后在表格的每一项,写上代码"=edit!A1"....
最后保存
把这个文件作为标准文件
然后每次就通过这种方法可以用enter输入

也不是很方便,但多的话就快点

****************8

谢谢楼主美誉^_^,如果你有编程的朋友更简单,用VB做一个Excel的插件小程序,更加容易实现。

^^^^^^^^^^^^^^^^^^^^^^^^^^
嗯klndlcky的方法是最实用的,使用VBA进行编程

其中的offset是指当前位置对应的相对坐标,楼主可以仿照修改一下,这个程序帮你解读一下

If Target.Cells.Count > 1 Or Target.Row < 5 Then Exit Sub
这里规定了前5行和多于一个单元格选择,这个区间程序不生效
Select Case Target.Column
以列为筛选对象,下面的case7之类的是指第几列

程序可能和楼主的要求稍有出入

稍微修改了一下
Private Sub Worksheet_Change(ByVal Target As Range)

If Target = Cells(1, 2) Then '如果选择了(B1)

If IsEmpty(Target) = True Then '如果B1是空的
Target.Select'选择B1
Beep
Else 'B1不是空的,回车到下一个
Cells(1, 7).Select 'G1被选中
Beep
End If
End If

End Sub

楼主照着慢慢调试吧

&&&&&&&&&&&&&&&&&&&&&&&

嘿嘿,这位老大哥还真不错,测试过了,楼主按照他的方法调整吧
参考技术B 最简单最实用的方法是先将你需要填写的单元格选中,然后填好一个就按Enter键,如果上一格写错了,按Shift+Enter键可回到上一格,按F2进行编辑,或直接重写这一格,当然,如果不用Enter键,用Tab键也可,不过Tab键是用于横向移动当前单元格,而Enter键是用于纵向移动当前单元格。 参考技术C EXCLE还没达到这种猜测心理的智能的程度
一般来说 输数据时都是连续的,所以EXCEL只提供了回车后往上下左右4个方向走,其他的没有
想要隔单元格,只能点鼠标,这是最简单也是最快的 (:
参考技术D 不按回车
按“Tab键”

Jquery:如何在按下回车键时触发点击事件

【中文标题】Jquery:如何在按下回车键时触发点击事件【英文标题】:Jquery: how to trigger click event on pressing enter key 【发布时间】:2013-08-12 04:35:52 【问题描述】:

我需要在按下回车键时执行一个按钮点击事件。

目前事件没有触发。

如果可能,请帮助我了解语法。

$(document).on("click", "input[name='butAssignProd']", function () 
   //all the action
);

这是我尝试在输入时触发点击事件。

$("#txtSearchProdAssign").keydown(function (e) 
  if (e.keyCode == 13) 
    $('input[name = butAssignProd]').click();
  
);

【问题讨论】:

您可能必须包含 return false 或 e.preventDefault(); 附带说明:e.keyCode 并非完全跨浏览器。请改用e.which 在这种情况下,您应该使用keyup 而不是keypresskeydownkeypress/keydown 按键按下时连续触发事件:jsbin.com/uzoxuk/1/edit 现代方式:e.key === 'Enter'(在所有现代浏览器甚至 IE9+ 中都支持)。我将在 7 年后回来发布新的“现代”技术。 【参考方案1】:

试试这个....

$('#txtSearchProdAssign').keypress(function (e) 
 var key = e.which;
 if(key == 13)  // the enter key code
  
    $('input[name = butAssignProd]').click();
    return false;  
  
);   

$(function() 

  $('input[name="butAssignProd"]').click(function() 
    alert('Hello...!');
  );

  //press enter on text area..

  $('#txtSearchProdAssign').keypress(function(e) 
    var key = e.which;
    if (key == 13) // the enter key code
    
      $('input[name = butAssignProd]').click();
      return false;
    
  );

);
<!DOCTYPE html>
<html>

<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
  <meta charset=utf-8 />
  <title>JS Bin</title>
</head>

<body>
  <textarea id="txtSearchProdAssign"></textarea>
  <input type="text" name="butAssignProd" placeholder="click here">
</body>

</html>

Find Demo in jsbin.com

【讨论】:

如果人们想从任何地方识别“输入”按键,您可以替换 $('#txtSearchProdAssign') 并在文档 $(document).keypress 上触发...... 从可访问性的角度来看是有问题的。这肯定适用于具有不同“选择”方法的所有类型的设备吗?【参考方案2】:

试试这个

$('#twitterSearch').keydown(function(event) 
    var keyCode = (event.keyCode ? event.keyCode : event.which);   
    if (keyCode == 13) 
        $('#startSearch').trigger('click');
    
);

希望对你有帮助

【讨论】:

您的意思是if((event.keyCode || event.which) == 13)?是的,它是完全跨浏览器,支持Tab FF 键。 根据API,event.keyCode是多余的,使用event.which即可。【参考方案3】:
$('#txtSearchProdAssign').keypress(function (e) 
  if (e.which == 13) 
    $('input[name = butAssignProd]').click();
    return false;  
  
);

我也刚刚找到Submitting a form on 'Enter',它涵盖了大部分问题。

【讨论】:

【参考方案4】:

你快到了。不过,您可以尝试以下方法。

$(function()
  $("#txtSearchProdAssign").keyup(function (e) 
    if (e.which == 13) 
      $('input[name="butAssignProd"]').trigger('click');
    
  );
);

我使用trigger() 执行单击并将其绑定在keydownkeyup 事件上,因为click 事件实际上包含两个事件,即mousedown 然后mouseup。所以要尽可能与keydownkeyup 相似。

这是Demo

【讨论】:

【参考方案5】:

另一个补充:

如果您要动态添加输入,例如使用 append(),则必须使用 jQuery on() 函数。

$('#parent').on('keydown', '#input', function (e) 
    var key = e.which;
    if(key == 13) 
        alert("enter");
        $('#button').click();
        return false;
    
);

更新:

更有效的方法是使用 switch 语句。你也会发现它更干净。

标记:

<div class="my-form">
  <input id="my-input" type="text">
</div>

jQuery:

$('.my-form').on('keydown', '#my-input', function (e) 
  var key = e.which;
  switch (key) 
  case 13: // enter
    alert('Enter key pressed.');
    break;
  default:
    break;
  
);

【讨论】:

IMO 对单个条件使用 switch 语句是矫枉过正。 不过,它比 if 语句更有效。 我不相信你。你能引用一个来源吗?【参考方案6】:

您是否尝试在按下 Enter 键时模拟单击按钮?如果是这样,您可能需要使用 trigger 语法。

尝试改变

$('input[name = butAssignProd]').click();

$('input[name = butAssignProd]').trigger("click");

如果这不是问题,请尝试通过查看这篇文章中的解决方案来再次查看您的密钥捕获语法:jQuery Event Keypress: Which key was pressed?

【讨论】:

来自api.jquery.com/click - 此方法是前两个变体中 .on( "click", handler ) 和第三个变体中 .trigger( "click" ) 的快捷方式。所以这将完全一样。【参考方案7】:

只需在代码中包含 preventDefault() 函数,

$("#txtSearchProdAssign").keydown(function (e) 

   if (e.keyCode == 13) 
   
       e.preventDefault();
       $('input[name = butAssignProd]').click();
   
);

【讨论】:

【参考方案8】:

试试这个

<button class="click_on_enterkey" type="button" onclick="return false;">
<script>
$('.click_on_enterkey').on('keyup',function(event)
  if(event.keyCode == 13)
    $(this).click();
  
);
<script>

【讨论】:

【参考方案9】:

Jquery:触发按钮单击事件使用输入按钮按下 试试这个::

tabindex="0" onkeypress="return EnterEvent(event)"

 <!--Enter Event Script-->
    <script type="text/javascript">
        function EnterEvent(e) 
            if (e.keyCode == 13) 
                __doPostBack('<%=btnSave.UniqueID%>', "");
            
        
    </script>
    <!--Enter Event Script-->

【讨论】:

【参考方案10】:

您可以使用此代码

$(document).keypress(function(event)
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13')
       alert('You pressed a ENTER key.');
    
);

【讨论】:

【参考方案11】:

     $('#Search').keyup(function(e)
        
            if (event.keyCode === 13) 
            e.preventDefault();
            var searchtext = $('#Search').val();
            window.location.href = "searchData.php?Search=" + searchtext + '&bit=1';
            
        );

【讨论】:

【参考方案12】:

这是我的首选解决方案。

    $("#text").keyup(function(event) 
        if (event.which === 13) 
            $("#submit").click();
        
    );

超级简单,超级 jQuery。

【讨论】:

【参考方案13】:

现在这似乎是默认行为,所以这样做就足够了:

$("#press-enter").on("click", function()alert("You `clicked' or 'Entered' me!"))

你可以try it in this JSFiddle

测试于:Chrome 56.0 和 Firefox(开发版)54.0a2,均使用 jQuery 2.2.x 和 3.x

【讨论】:

这似乎根本没有抓住“回归”新闻。 @klokop 你错了,这会捕获“返回”或“输入”。我刚刚在 FF 63、Chrome 69、Safari 10.0.1 和 Opera 55 上使用 jQuery 3 自己尝试过,无论是在他们的链接上,还是在我自己创建的一个单独的网站上测试它。这是我的 +1。 您正在使用一个按钮,输入将触发按钮和 标签,但在跨度上说或者因为 OP 有一个常规输入字段,情况并非如此。

以上是关于如何设置Excel在按回车后直接跳至另一个编辑框的主要内容,如果未能解决你的问题,请参考以下文章

将excel中数据保存至另一个excel中用vba

Excel 编辑公式后格式自动变成文本

Excel 编辑公式后格式自动变成文本

EXCEL如何实现 回车到达某个单元格自动跳转到指定单元格

如何在excel 图表中坐标轴上输入数学公式啊?

为啥只有在按回车后才能在串行连接中收到字符?