feetwet Asked: 2021-04-13 13:49:07 +0800 CST2021-04-13 13:49:07 +0800 CST 2021-04-13 13:49:07 +0800 CST Excel 默认按列而不是行查找 772 在 Excel 中使用特定工作簿时,我希望默认Find为Search By Columns,而不是By Rows(这似乎是不可变的默认值)。 如果我手动进行更改,Find Options它将在该 Excel 过程中保留。如何以编程方式设置该选项? microsoft-excel vba 2 个回答 Voted ExcelEverything 2021-04-13T14:32:23+08:002021-04-13T14:32:23+08:00 不幸的是,似乎没有允许您自定义默认查找行为的 Excel 设置或注册表编辑。显而易见的是,每个活动的 Excel 实例或会话都会记住 Find 行为设置 - 也就是说,只要 Excel 打开,Find 设置就会在您更改它们后被记住。您可以通过编写一个小的 VBA 宏来滥用这一事实,该宏会在 Excel 启动时立即进行搜索。此查找可以通过查找对话框或 VBA cells.find 方法在 VBA 代码中执行。这里需要注意的是,某些设置(例如“在”工作簿/工作表中)似乎无法通过 VBA 进行配置。我认为可以通过 VBA 设置按行/列的“搜索”,但我不是 100% 确定。 如果您搜索“excel 默认查找和替换设置”,则该解决方案的分步实施将在几篇文章中介绍,例如: https://excelribbon.tips.net/T008802_Changing_Default_Search_Settings.html 文章没有提到的是如何在每次打开任何工作簿时执行宏。为此,您必须将宏添加到您的 personal.xlsb 文件中。个人.xlsb 的使用包含在几个在线资源中,包括 Microsoft 直接提供的资源。为了您的方便,请参阅这篇文章: https://www.myonlinetraininghub.com/create-a-personal-macro-workbook-personal-xlsb Best Answer feetwet 2021-04-13T18:37:11+08:002021-04-13T18:37:11+08:00 以下宏将Find在后台设置默认值 -此处记录的参数: Sub SetFindByColumns() Dim c As Range Set c = Cells.Find(What:="", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns) End Sub 在模块中定义后,在ThisWorkbook对象中添加以下调用将在工作簿打开后立即触发它: Private Sub Workbook_Open() SetFindByColumns End Sub
不幸的是,似乎没有允许您自定义默认查找行为的 Excel 设置或注册表编辑。显而易见的是,每个活动的 Excel 实例或会话都会记住 Find 行为设置 - 也就是说,只要 Excel 打开,Find 设置就会在您更改它们后被记住。您可以通过编写一个小的 VBA 宏来滥用这一事实,该宏会在 Excel 启动时立即进行搜索。此查找可以通过查找对话框或 VBA cells.find 方法在 VBA 代码中执行。这里需要注意的是,某些设置(例如“在”工作簿/工作表中)似乎无法通过 VBA 进行配置。我认为可以通过 VBA 设置按行/列的“搜索”,但我不是 100% 确定。
如果您搜索“excel 默认查找和替换设置”,则该解决方案的分步实施将在几篇文章中介绍,例如:
https://excelribbon.tips.net/T008802_Changing_Default_Search_Settings.html
文章没有提到的是如何在每次打开任何工作簿时执行宏。为此,您必须将宏添加到您的 personal.xlsb 文件中。个人.xlsb 的使用包含在几个在线资源中,包括 Microsoft 直接提供的资源。为了您的方便,请参阅这篇文章:
https://www.myonlinetraininghub.com/create-a-personal-macro-workbook-personal-xlsb
以下宏将
Find
在后台设置默认值 -此处记录的参数:在模块中定义后,在
ThisWorkbook
对象中添加以下调用将在工作簿打开后立即触发它: