gpt4 book ai didi

vba - 仅允许 sub 在另一个已运行 VBA 后运行

转载 作者:行者123 更新时间:2023-12-04 21:37:34 28 4
gpt4 key购买 nike

我创建了一个从另一个文件导入数据的工作簿,然后通过查找标题字符串“时间”来删除任何行。但是,如果删除行的宏再次运行,它将删除标题,因为还有一个名为“时间”的子标题。

或者有没有办法限制查找搜索的字符,即说我的子标题是实时的,我的字符限制是 4,查找应该只返回“真实”,因此忽略它?

我想要做的是禁用行删除代码,除非有新的数据导入并且行删除尚未运行。

下面的一些伪代码

If (DataImport has been run){
If (rowDelete has been run since DataImport){
return;
}
else{
run rowDelete
}
}

Excel VBA
Sub ImportData()

Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sheet As Worksheet
Dim pastestart As Range

Set wb1 = ActiveWorkbook 'Sheets("Data")
Set pastestart = [Data!A1]

FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a data file")

If FileToOpen = False Then
MsgBox "No File Specified.", vbExclamation, "error"
Exit Sub
Else
Set wb2 = Workbooks.Open(Filename:=FileToOpen)

For Each sheet In wb2.Sheets
With sheet.UsedRange
.Copy pastestart
Set pastestart = pastestart.Offset(.Rows.Count)
End With
Next sheet
End If

wb2.Close
End Sub

_____________________________________________________________________

Sub rowDelete()

Dim FindRow As Range

On Error Resume Next
With Sheets("Data")
Set FindRow = Cells.Find(What:="Time", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:= _
xlPart, MatchCase:=False)
End With

On Error GoTo 0

Range("A1", FindRow).EntireRow.Delete

End Sub

最佳答案

您可以在工作表中包含一个单元格,该单元格说明自最后一行删除后是否进行了导入;在 ImportData 末尾添加一行代码更新此单元格的过程。

ThisWorkbook.Sheets(1).Range("A1") = "Imported"

然后在 rowDelete 的末尾过程中,您可以更新此单元格以反射(reflect)行已被删除。
ThisWorkbook.Sheets(1).Range("A1") = "Rows deleted"
然后在 rowDelete程序,您可以检查最后运行的程序是否为 rowDelete .如果是,请不要运行该过程。
If ThisWorkbook.Sheets(1).Range("A1") = "Rows deleted" Then
Exit Sub
End If

如果单元格显示 ImportData最后运行程序(因为单元格显示“已导入”),然后 rowDelete程序可以运行。

关于vba - 仅允许 sub 在另一个已运行 VBA 后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31650264/

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