必须运行两次宏

时间:2019-08-28 13:01:02

标签: excel vba adp

我需要运行两次宏才能工作

不知道如何解决

Dim ws As Worksheet
Dim tmp As Worksheet
Dim acct As String

Set ws = Sheets("Booking")
Set tmp = ThisWorkbook.Worksheets.Add
tmp.Activate

On Error Resume Next
AppActivate "BTS", True
On Error GoTo 0
Sleep 1000

On Error Resume Next

SendKeys "MRGN", True 'enter margin
Sleep 500
SendKeys "^", True 'reset
Sleep 500
SendKeys "40911025", True ' enter account number
SendKeys "{F3}", True 'get balance secreen
Sleep 750 'waits X seconds
SendKeys "^{INSERT}", True 'copy
Sleep 100
tmp.Activate

tmp.Range("A1").Select
tmp.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False

        ws.Range("I7") = Trim(Left(tmp.Range("A7"), 13)) 'GetEquity
        ws.Range("I9") = Trim(Left(tmp.Range("A9"), 13)) 'GetMM
        ws.Range("I11") = Trim(Left(tmp.Range("A11"), 13)) 'GetDebt
        ws.Range("I13") = Trim(Left(tmp.Range("A13"), 13)) 'GetL250

Application.DisplayAlerts = False

tmp.Delete

Application.DisplayAlerts = True
Application.ScreenUpdating = True


Sheets("Booking").Activate

它可以工作,但是我需要运行两次。

1 个答案:

答案 0 :(得分:0)

如果您需要宏循环两次,请在同一模块中设置一个单独的子例程,然后只需两次调用主子例程。不过,这有点蛮力,所以我建议不要经常这样做。

call main_subroutine_name() 
call main_subroutine_name()

但是,您的问题似乎与您粘贴的数据有关。您是否要粘贴值,并且要在哪里粘贴数据?如果您要粘贴“ A1”范围内的数据,请尝试:

range("A1").pastespecial ...

由于您已经激活了特定的工作表,因此无需将工作表指定为您要粘贴的区域,而只需引用如上所示的单元格“ A1”即可。

相关问题