excel - Excel VBA 中需要的对象
问题描述
我试图让用户输入工作表名称并根据输入我希望将选定的单元格值从一个工作表复制到另一工作表到新行。
这是一个基本的excel功能系统
Set nextCellInColumn = Worksheets("Summary").Cells(Rows.Count, 4).End(xlUp).Offset(1, 0)
strName = Application.InputBox("Please enter")
nextCellInColumn.Value = Worksheets.Application.InputBox("Please enter").Range("I5").Value
Worksheets.Application.InputBox("Please enter").Range("I5").Copy Worksheets("Summary").Range("D6")
解决方案
您需要测试用户输入的工作表名称是否存在,否则复制将失败。此外,如果用户按下Cancel按钮,InputBox
将返回一个 boolean False
。您需要检查并退出,否则您的代码也会失败。
Option Explicit
Public Sub Test()
Dim wsSummary As Worksheet
Set wsSummary = ThisWorkbook.Worksheets("Summary")
Dim NextCellInColumn As Range
Set NextCellInColumn = wsSummary.Cells(wsSummary.Rows.Count, 4).End(xlUp).Offset(1, 0)
Dim strName As Variant 'if user presses cancel it will return a boolean false
strName = Application.InputBox("Please enter")
If VarType(strName) = vbBoolean And strName = False Then Exit Sub 'user pressed cancel so exit
If WorksheetExists(strName) Then
NextCellInColumn.Value = ThisWorkbook.Worksheets(strName).Range("I5").Value
ThisWorkbook.Worksheets(strName).Range("I5").Copy wsSummary.Range("D6")
Else
MsgBox "Worksheet '" & strName & "' not found.", vbCritical
End If
End Sub
'check if a worksheet exists
Public Function WorksheetExists(ByVal WorksheetName As String, Optional ByVal wb As Workbook) As Boolean
If wb Is Nothing Then Set wb = ThisWorkbook 'default to thisworkbook
Dim ws As Worksheet
On Error Resume Next
Set ws = wb.Worksheets(WorksheetName)
On Error GoTo 0
WorksheetExists = Not ws Is Nothing
End Function
推荐阅读
- javascript - 在文件中导入多个反应组件而不产生性能问题的最佳方法是什么?
- typescript - GraphQL 查询结果中的类型不存在属性
- c# - Activator.CreateInstance(assemblyType) 使用 c# 返回 null
- airflow - 气流任务流 - 并行运行任务
- java - Java JSP:Cookie 值返回是,尽管设置为 0
- python - 使用 python 发布请求添加新设备时,数据包跟踪器网络控制器中出现错误 500
- firebase - @firebase/database: FIREBASE INTERNAL ERROR: Server Error: The specified payload is too large, please request a location with less data
- python - 制作具有透明像素的 .png 文件
- laravel - 如何在刀片模板中使用预加载 webpack 插件
- flutter - 无法打开设置文件的设置通用类缓存“