Loop +2, +4, etc. help

T

tmwilkin

I am trying to loop a routine using SENDKEYS that performs a function 2
times, then 4 times, then 6 times (all previous + 2 essentially). The below
code runs through the whole routine 70 times which I want to keep, but I
would like the:
SendKeys "{TAB}", False
command to essentially send TAB twice, then 4x, then 6x, etc, all +2 based
on the previous number. If anyone could help, I would greatly appreciate it.

<------ full code below -------->

Public Sub FIXED()

Application.Wait (Now + TimeValue("0:00:05"))
Dim i As Integer

For i = 1 To 70

SendKeys "{TAB}", False
'Application.Wait (Now + TimeValue("0:00:01"))



SendKeys "{ENTER}", False
'Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "^%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{g}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{INSERT}", False
Application.Wait (Now + TimeValue("0:00:01"))

Next

End Sub
 
T

Tom Ogilvy

If you are doing something on a worksheet, this is the wrong approach.


Public Sub FIXED()

Application.Wait (Now + TimeValue("0:00:05"))
Dim i As Integer
k = 0
For i = 1 To 70
k = k + 2
for j = 1 to k
SendKeys "{TAB}", False
'Application.Wait (Now + TimeValue("0:00:01"))
Next j


SendKeys "{ENTER}", False
'Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "^%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{g}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{INSERT}", False
Application.Wait (Now + TimeValue("0:00:01"))

Next

End Sub
 
B

Brian Withun

Public Sub FIXED()

Application.Wait (Now + TimeValue("0:00:05"))
Dim i As Integer

For i = 1 To 70

' 1st iteration sends 2 tabs (2*1)
' 2nd iteration sends 4 tabs (2*2)
' 3rd iteration sends 6 tabs (2*3)
' ...
For t = 1 To (2 * i)
SendKeys "{TAB}", False
Next t

'Application.Wait (Now + TimeValue("0:00:01"))

SendKeys "{ENTER}", False
'Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "^%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{g}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{INSERT}", False
Application.Wait (Now + TimeValue("0:00:01"))

Next

End Sub

HTH

Brian Herbert Withun
 
T

Tom Ogilvy

I see you are using the VBA sendkeys, so I believe this would work as well

Public Sub FIXED()

Application.Wait (Now + TimeValue("0:00:05"))
Dim i As Long, k as Long
k = 0
For i = 1 To 70
k = k + 2
SendKeys "{TAB " & k "}", False
'Application.Wait (Now + TimeValue("0:00:01"))
' note the space after the TAB

SendKeys "{ENTER}", False
'Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "^%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{a}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{g}", False
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%{INSERT}", False
Application.Wait (Now + TimeValue("0:00:01"))

Next

End Sub
 
J

John Bundy

For j = 1 To i*2 ought to get you what you need.
You can specify how many times to tab on the line like Application.SendKeys
"{TAB 4}", False but i couldn't get a variable to work in its place.
 
T

tmwilkin

That worked perfectly - Thanks! I'm using the sendkeys to make changes to a
web browser page.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top