- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Excel 中的数据库开发 VBA 宏。我有一个存储诸如姓名、电子邮件等信息的工作表(遗憾的是,这些信息并没有一致地放在所有工作表的同一列中,但电子邮件地址从“B:F”跨越),这个数据库被分成多个工作表。除了所有这些工作表之外,我还有另一个工作表(下面代码中的“Sheet2”),其中存储了分配给我的时事通讯的所有电子邮件地址。 (此表中的唯一信息是“A”列中的电子邮件地址)。
我正在处理的 VBA 应该遍历所有订阅时事通讯(“Sheet2”)的电子邮件地址,并检查它们是否存储在“数据库”中 - 以及其他工作表中。如果没有,请发出警告 - 在电子邮件旁边的单元格中写下“NOTFOUND”。
出于某种原因,VBA 在行上给了我一个运行时错误“对象不支持此属性或方法”:
使用工作表(sheetIndex).Range("B:F") .
本来我以为是因为我没有激活表格,但我仍然收到错误消息。
到目前为止我想出的代码:
Sub Search_for_emails()
Dim scanstring As String
Dim foundscan As Range
Dim lastRowIndex As Long
Dim ASheet As Worksheet
Set ASheet = Sheets("Sheet2")
lastRowInteger = ASheet.Range("A1", ASheet.Range("A1").End(xlDown)).Rows.Count
For rowNum = 1 To lastRowInteger
scanstring = Sheets("Sheet2").Cells(rowNum, 1).Value
For sheetIndex = 1 To ThisWorkbook.Sheets.Count
Sheets(sheetIndex).Activate
If Sheets(sheetIndex).Name <> "Sheet2" Then
With Sheets(sheetIndex).Range("B:F")
Set foundscan = .Find(What:=scanstring, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
End With
If foundscan Is Nothing Then
ASheet.Cells(rowNum, 2).Value = "NOTFOUND"
Else
' ASheet.Cells(rowNum, 2).Value = foundscan.Rows.Count
End If
End If
Next
Next rowNum
最佳答案
几点:
Activate
- 没必要。 sheet
或 range
, 否则 Excel 将使用事件工作簿/Sheets
之间有区别和 Worksheets
收藏。一个 Chart
例如,-sheet 没有单元格,因此没有 Range
. lastRowIndex
但使用 lastRowInteger
.为避免此类错误,请始终输入 Option Explicit
在代码的顶部。 Sub Search_for_emails()
Dim scanstring As String
Dim foundscan As Range
Dim lastRowIndex As Long, rowNum As Long
Dim ASheet As Worksheet
Set ASheet = ThisWorkbook.Worksheets("Sheet2")
lastRowIndex = ASheet.Range("A1", ASheet.Range("A1").End(xlDown)).Rows.Count
For rowNum = 1 To lastRowIndex
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Sheet2" Then
With ws.Range("B:F")
Set foundscan = .Find(What:=scanstring, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
End With
If foundscan Is Nothing Then
ASheet.Cells(rowNum, 2).Value = "NOTFOUND"
Else
' ASheet.Cells(rowNum, 2).Value = foundscan.Rows.Count
End If
End If
Next
Next rowNum
End Sub
关于EXCEL VBA调试: Searching through the whole workbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51944072/
如何引用我的主要工作簿和通过此子过程打开的第二个工作簿?我尝试做workbooks.("client_path").activate因为我使用此宏的目标是打开一个单独的工作簿,该工作簿分配给变量 cl
看到这篇文章Detail AttributeError: 'module' object has no attribute 'workbook'对于同样的错误,有一个拼写错误。“W”对于工作簿来说是大
我创建了一个文件并将其引用为 GlobalFile . 然后我将它保存为“Glo”,然后保存为“Ume”。然后我重新打开保存的文件,以在两个不同的 Workbook 对象中以两个不同的名称打开两个不同
我无法将数据从一个工作簿复制到另一个工作簿。但在同一工作簿中它的工作原理。运行宏程序后,目标工作表为空。我有2个代码。两者都不工作。我的源文件是.xlsx格式,目标文件是.xlsm格式。有没有错误?
我在一个文件夹中有许多相同结构的 excel 文件(Test01、Test02、Test03)。 我在同一个文件夹中创建了另一个 excel 文件,需要从其他 excel 文件(结果)中提取信息。 每
我正在尝试将整个工作表从一个 Excel 文件复制到另一个 Excel 文件中的工作表。以下是我编写的代码,但不起作用。请提出更改建议。 Sub copyallwos() Dim wkbSource
各位,我正在尝试设置 WorkbookSaveAsArgs 的 TextCodepage 属性,用作 Workbook 方法 SaveAs 的参数。它用于将 .xls 文件转换为 .csv 文件。但是
我目前正在使用 Workbooks.Open 来处理目录中包含的大量文件。但是打开和关闭这些文件会使文件出现在任务栏中,我想避免不断闪烁。 我收到一条建议,我可以使用 CreateObject 创建一
我在 Oracle Linux 6.6 中运行我的 Python 程序时遇到以下异常。我使用的是 Python 2.6 版。 Exception('Exception caught in workbo
我正在尝试将一堆 CSV 文件放入一个工作簿中,这是我的代码: import csv import glob import openpyxl import os, sys import pandas
我有一个大型 Microsoft Excel 文件,在办公室的用户之间共享。该文件有一个宏和一组数据验证。该文件每三个月的最后两周使用一次。该文件在圣诞节之前工作得很好,但是,我们在三月份遇到了错误。
我感觉我错误地使用了“onLoad”回调。基本上我要做的是在我的自定义功能区加载后立即在 VBA 中运行一些代码(位于我创建的加载项上)。 这是 XML 代码: 这是 VBA 代码: 这是一个全局声
当我在 VBA 中调用 Thisworkbook.Protect 时,工作簿的保护实际上会切换当前工作簿的保护状态,而不仅仅是保护工作簿。 Thisworkbook.Unprotect 但不会执行此操
我得到了一个由前同事创建的 Excel 文件。 Excel文件有数据连接链接到一些提取数据的位置,如何知道源的实际路径?我只看到它链接到 Data Source=Workbook; 工作簿的实际路径是
我正在尝试在 Microsoft Excel VBA 2010 中使用 Workbooks.Open 方法,但我收到一个编译错误,指出它需要“=”。我打错代码了吗? Workbooks.Open (
我有这段代码,它使用 workbook.open 打开 Excel 文件的下载链接。 Set wkbWebWorkbook = Workbooks.Open("sample") 在我的机器上,这总是有
我正在尝试复制打开一个工作簿,复制一个范围并将其粘贴到另一个工作簿中。打开工作簿并选择宏停止的范围后。 如果我稍后在代码中使用 Workbook.close,宏会在同一点停止,但工作簿甚至没有打开。
我正在编写一些将在按下按钮时运行的代码,打开一个 .csv 文件(从另一个程序导出),复制一些信息,然后将其粘贴到第一个文件中。有时(并且只有某些时候)它实际上会粘贴来自不同文件的信息。它似乎在打开另
我正在尝试将 .xls 文件转换为 .xlxs 我尝试了此代码的许多变体,但每次我遇到此错误消息时: Exception lors de l'appel de « SaveAs » avec « 2
我在尝试使用 VBA 读取两个 .CSV 文件的内容时遇到问题。这两个文件的结构如下: 当我使用 Workbooks.Open(
我是一名优秀的程序员,十分优秀!