我遇到了一个问题。在我的工作中,我们经常会收到包含地点的电子表格。我们需要将每个地点分散到不同的工作表中。因为这样我们才能列出附近的商家来做广告。当他们给我们包含 5 个地点的电子表格时,这不是什么大问题,但最近我们收到了一张包含 100 多个地点的电子表格。
我想创建一个函数,该函数接受给定的行,取第一个值并将其内容(位置编号)放入新工作表中。将该行复制到以其命名的工作表中,然后粘贴。这是我当前的代码。我遇到了“类型不匹配”和“需要对象”的问题。对这些问题有什么建议吗?
子测试行三() Dim row 作为整数 行 = 3 复制行(行) 子目录结束 Sub CreateNewSheet(strName 作为字符串) Sheet.Add.Name = strName 子目录结束 Sub CopyRow(rowNum 作为整数) Dim mainSheetName 作为字符串 mainSheetName = ActiveWorkbook.ActiveSheet.Name Dim newSheetName 作为字符串 newSheetName = Sheets(mainSheetName).Range("$A$" & rowNum).Value 工作表(mainSheetName)。选择 范围(“A”& rowNum & “:H”& rowNum).剪切 创建新工作表(新工作表名称) 工作表(新工作表名称).选择 范围("A" + rowNum + ":H" + rowNum).选择 活动工作表.粘贴 子目录结束
答案1
在代码中发现一些虽小但至关重要的错误。
- 在“CreateNewSheet”中,
Sheet
需要的Sheets
Sheet 没有引用任何内容,因此出现“需要对象”错误 - 在选择要粘贴到的新范围时,我错误地使用了“ Yield”
+
而不是&
“Yield”,导致类型不匹配。注意:然后我意识到,一旦我可以执行我的代码,我就会将它们复制到原始行上,这很烦人,通过复制到同一行来修复它。
我在下面发布了我修改后的代码。
子测试行三() Dim row 作为整数 行 = 3 复制行(行) 子目录结束 Sub CreateNewSheet(strName 作为字符串) Sheets.Add.名称 = strName 子目录结束 Sub CopyRow(rowNum 作为整数) Dim mainSheetName 作为字符串 mainSheetName = ActiveWorkbook.ActiveSheet.Name Dim newSheetName 作为字符串 newSheetName = Sheets(mainSheetName).Range("$A$" & rowNum).Value 工作表(mainSheetName)。选择 Range("A" & rowNum & ":H" & rowNum).复制 创建新工作表(新工作表名称) 工作表(新工作表名称).选择 范围("A1:H1").选择 活动工作表.粘贴 子目录结束