excel - VBA - 通过现有列表复制工作表直到列表末尾
问题描述
我创建了一个 VBA 代码,该代码在最后一个代码上失败。
我通过网站源获得了这段代码。
这是描述:
- 表“天行者”是来自系统的数据。
- 表“生成”是通过已经设置的公式来检查需要报表出具的金额列表。
- B3 上的“生成”表是要按下的按钮的位置(绿色)。阅读
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
宏失败后。
这是代码和模板示例
示例模板 https://drive.google.com/drive/folders/1GWqOfZFpiay0NVP-mXQfjGEc4UEqCzKn?usp=sharing
Sub CreateSheetsFromAList()
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets(4).Range("C6")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
For Each MyCell In MyRange
Sheets(5).Copy After:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
Next MyCell
Application.ScreenUpdating = False
End Sub
我需要做什么才能使宏不调试?
宏完成后我需要一个消息框。
我真的很感谢你的帮助。TQ
对不起我的英语不好。
解决方案
只是为了搭载 Harun24HR 的代码,我会添加一个 Goto 语句而不是“Exit Sub”。提供的列表有 8 行(第 6-13 行)值,其余为空值。如果存在第 14 行为空而第 15 行有值的情况怎么办?因此,我们希望使用 Goto 语句来处理这种情况。
以下是Harun24HR修改后的代码:
Sub CreateSheetsFromAList()
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets(4).Range("C6")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
Application.ScreenUpdating = False
For Each MyCell In MyRange
If MyCell.Value = "" Then 'Check for null/empty value cell.
GoTo NextOne: 'Go to next MyCell
Else
Sheets(5).Copy After:=Sheets(Sheets.count) 'creates a new worksheet
Sheets(Sheets.count).Name = MyCell.Value ' renames the new worksheet
End If NextOne:
Next MyCell
Application.ScreenUpdating = True
MsgBox "Macro is done" 'Insert your own message between the quotations.
End Sub
推荐阅读
- c++-cli - 在 ref 类成员中将 System::String^ 转换为 std::string
- intellij-idea - 如何强制 IntelliJ IDEA 将所有 java 文件从空格转换为制表符?
- angular - 隐藏用户选择的材料卡不起作用
- apache-kafka-streams - Quarkus 原生,带有 Kafka Streams 和 Schema Registry
- xaml - Xamarin Forms Center Collection查看内容
- c# - 从类型获取默认属性值,无需实例化类
- perl - 复制并保留以前的输出以备份转换后的 json 数据
- angular - Angular:如何解决错误 core.js:6185
- node.js - npm WARN 已弃用 tslint@6.1.2:TSLint 已被弃用,取而代之的是 ESLint
- reactive-programming - RSocket 数据库(Cassandra 或 Postgresql)性能研究