excel - 如果未输入名称或为空,则应发送警告消息,然后结束

标签 excel vba error-handling

Private Sub CommandButton1_Click()
    Dim sourceworkbook As Workbook
    Dim currentworkbook As Workbook
    
    Set currentworkbook = ThisWorkbook
    Set sourceworkbook = Workbooks.Open("C:\Users\Robert Sindo\Desktop\JMI Inventory Analyst Master Files\JYKO\JYKO SKU  Masterlist.xlsm")
    sourceworkbook.Sheets("Quickbook").Copy after:=currentworkbook.Sheets("QB Uploader")
    Sheets(Sheets.Count).Name = InputBox("ASSIGN A NEW NAME:")
    
    If sourceworkbook.Value = "" Then
         MsgBox "There is no data in your selection."
         Exit Sub
      Else
         sourceworkbook.Sheets("Quickbook").Select
      End If
    
    sourceworkbook.Close

最佳答案

现有或无效的工作表名称(错误处理)

Option Explicit

Private Sub CommandButton1_Click()
    
    Dim currentworkbook As Workbook: Set currentworkbook = ThisWorkbook
    
    Dim sourceworkbook As Workbook
    Set sourceworkbook = Workbooks.Open("C:\Users\Robert Sindo\Desktop\JMI Inventory Analyst Master Files\JYKO\JYKO SKU  Masterlist.xlsm")
    
    sourceworkbook.Sheets("Quickbook").Copy After:=currentworkbook.Sheets("QB Uploader")
    ' If copying after the last sheet, rather use the following:
    'sourceworkbook.Sheets("Quickbook").Copy After:=currentworkbook.Sheets(currentworkbook.Sheets.Count)
    
    sourceworkbook.Close SaveChanges:=False
    
    Dim NewName As String: NewName = InputBox("ASSIGN A NEW NAME:")
    
    Dim ErrNum As Long
    
    On Error Resume Next ' there can be two reasons: existing name and invalid name (emptystring, more than 31 chars...)
        currentworkbook.Sheets(currentworkbook.Sheets.Count).Name = NewName
        ErrNum = Err.Number
    On Error GoTo 0
    
    If ErrNum <> 0 Then
        Application.DisplayAlerts = False
        currentworkbook.Sheets(currentworkbook.Sheets.Count).Delete
        Application.DisplayAlerts = True
        MsgBox "The name '" & NewName & "' could not be used.", vbCritical
        Exit Sub
    'Else
         'MsgBox "Sheet renamed.", vbInformation
    End If
    
End Sub

关于excel - 如果未输入名称或为空,则应发送警告消息,然后结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71370746/

相关文章:

excel - 在vba中创建一个包含变量的动态公式

excel - 无所不在: Application defined or object defined error

javascript - JS Bluebird Promise错误未提供任何细节

Excel vba - 如何在单元格中找到第 8 位数字并评估它是否正确

vba - 是否可以将 Excel 宏与文件扩展名相关联?

excel - 我怎样才能总结一列大小时:mins:seconds figures in excel?

excel - 工作表更改两个选择相交

vba - 根据一个单元格值并引用​​另一单元格值复制行并粘贴到新工作表上

excel - 使用宏编辑共享点列表

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?