gpt4 book ai didi

excel - 循环浏览工作表以查看工作表名称是否已被占用 - 循环中的 Len/Left 函数

转载 作者:行者123 更新时间:2023-12-04 21:48:32 27 4
gpt4 key购买 nike

我在下面遇到问题。我的代码基本上是一个排序功能,它从另一个工作表中提取数据以便为用户提供正确的 View ,但是如果用户两次选择相同的产品,我的代码会产生错误,因为信息表已经在工作簿中。

因此,我只是希望它选择工作表,如果工作表已经在工作簿中,而不是再次运行代码。

我的问题是,有时工作表名称会超过 31 个字符,这就是我使用 left/len 函数的原因。问题是它无法将现有的工作表名称识别为

Left(Myvalue & " Case Types", 31)

因此即使工作表已经存在也只运行代码并因此产生错误。使用 F8 浏览代码时,我可以看到名称应该相同。有什么建议么?
Dim S As Worksheet

Myvalue = activecell.Value

For Each S In ActiveWorkbook.Worksheets
If S.Name = Left(Myvalue & " Case Types", 31) Then GoTo Sheetalreadyexist
Next S

'Create New Sheet
Set ws = Sheets.Add(after:=Sheets(Worksheets.Count))
If Len(Myvalue & " Case Types") > 31 Then
ws.Name = Left(Myvalue & " Case Types", 31)
Else: ws.Name = Myvalue & " Case Types"
End If

Sheetalreadyexist: sheets(Left(Myvalue & " Case Types", 31).select

最佳答案

我将使用以下函数来检查工作表是否存在

 Public Function sheetExists(SheetName As String, Optional wrkBook As Workbook) As Boolean

If wrkBook Is Nothing Then
Set wrkBook = ActiveWorkbook 'or ThisWorkbook - whichever appropriate
End If

On Error GoTo EH

sheetExists = False ' Not really neccessary as this is the default

Dim sht As Object

For Each sht In wrkBook.Sheets
If UCase(sht.Name) = UCase(SheetName) Then
sheetExists = True
Exit For
End If
Next sht

Exit Function

EH:
sheetExists = False
End Function

然后你的代码看起来像这样
Sub OP_Code()

Dim S As Worksheet

Myvalue = ActiveCell.Value

If sheetExists(Left(Myvalue & " Case Types", 31)) Then
Sheets(Left(Myvalue & " Case Types", 31)).Select
Else
'Create New Sheet
Set ws = Sheets.Add(after:=Sheets(Worksheets.Count))
If Len(Myvalue & " Case Types") > 31 Then
ws.Name = Left(Myvalue & " Case Types", 31)
Else: ws.Name = Myvalue & " Case Types"
End If

End If

End Sub

关于excel - 循环浏览工作表以查看工作表名称是否已被占用 - 循环中的 Len/Left 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59453859/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com