AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1817467
Accepted
Shakir
Shakir
Asked: 2023-11-21 02:45:28 +0800 CST2023-11-21 02:45:28 +0800 CST 2023-11-21 02:45:28 +0800 CST

用于在 LibreOffice Calc 中的选定行下保持 3 行可见的宏

  • 772

在 Calc 或 MS Excel 中,当编辑完一行中的单元格后,按 Enter 键将转到下面的下一行。继续这样做,最终您将到达屏幕上可见的最后一行。在这里,当您按 Enter 时,它将进入下一行,但现在是最后一行。像 Nreal Air 眼镜一样,很难在屏幕上看到最后一行(因为底部总是模糊的)。我的解决方案是将当前选定的行保留在中间。这意味着每当按下 Enter 时,宏都会检查新选定的行下有多少行可见。如果小于 3,可见行将向上移动(因此将所选行保持在中间)。下列_答案在 MS Excel 中解决了这个确切的问题。我想在 LibreOffice Calc 中做同样的事情。但是,到目前为止,我一直没有成功编写一个宏来检查所选行下的可见行,并在每次按 Enter 时添加一个新行(因此将下一个所选行保留在屏幕中间)。知道如何在 Calc 中做到这一点吗?

python
  • 1 1 个回答
  • 26 Views

1 个回答

  • Voted
  1. Best Answer
    JohnSUN
    2023-11-21T17:28:35+08:002023-11-21T17:28:35+08:00

    您的任务并不难实现 - 事实上,您只需要使用.setFirstVisibleRow() 方法来更改显示区域,同时考虑“当前行”和“最后一个可见行”的值。例如,这个宏可以执行以下操作:

    Sub onSelectionChanged(Optional oEvent As Variant)
    Dim oCurrentController As Variant
    Dim arrayOfString() As String, tmpString As String
    Dim aVisibleRange As New com.sun.star.table.CellRangeAddress
    Dim nSheet As Integer,  nStartRow As Long,  nEndRow As Long, nCurrentRow As Long
        oCurrentController = ThisComponent.getCurrentController()
        aVisibleRange = oCurrentController.getVisibleRange()
        nSheet = aVisibleRange.Sheet
        nStartRow = aVisibleRange.StartRow
        nEndRow = aVisibleRange.EndRow
        arrayOfString = Split(oCurrentController.getViewData(), ";")
        If UBound(arrayOfString) < (3 + nSheet) Then Exit Sub
        tmpString = arrayOfString(3 + nSheet)
        If InStr(tmpString,"+") > 0 Then
            arrayOfString() = Split(tmpString, "+")
        Else
            arrayOfString() = Split(tmpString, "/")
        EndIf
        nCurrentRow = CLng(arrayOfString(1))
        If nEndRow - nCurrentRow < 4 Then  oCurrentController.setFirstVisibleRow(nStartRow + nCurrentRow - nEndRow + 3)
    End Sub
    

    主要困难在于选择如何运行该宏。例如,您可以将此脚本指定为“选择已更改”事件的处理程序。

    设置事件监听器

    但在这种情况下,宏仅适用于分配给它的那些工作表。(顺便说一句,您在问题中引用的 Excel 解决方案的工作原理完全相同 - 仅适用于指定的工作表)。

    您可以想到某种通用宏,当您打开任何电子表格时,都会将此事件侦听器分配给所有工作表,并将其分配给整个办公套件。

    • 0

相关问题

  • Conda 在激活环境时中断 -- CommandNotFoundError: No command 'conda conda'

  • Notepad++ 和 Python 文档字符串

  • SCons 使用开发 gcc8 构建

  • Matplotlib - 底图安装错误

  • pip 不会正确更新或安装模块

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve