ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Loop +2, +4, etc. help (https://www.excelbanter.com/excel-programming/395366-loop-2-4-etc-help.html)

tmwilkin

Loop +2, +4, etc. help
 
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

Tom Ogilvy

Loop +2, +4, etc. help
 
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

--
Regards,
Tom Ogilvy


"tmwilkin" wrote:

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


Brian Withun

Loop +2, +4, etc. help
 
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


Tom Ogilvy

Loop +2, +4, etc. help
 
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

--
Regards,
Tom Ogilvy


"tmwilkin" wrote:

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


John Bundy

Loop +2, +4, etc. help
 
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.
--
-John
Please rate when your question is answered to help us and others know what
is helpful.


"tmwilkin" wrote:

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


tmwilkin

Loop +2, +4, etc. help
 
That worked perfectly - Thanks! I'm using the sendkeys to make changes to a
web browser page.

"Tom Ogilvy" wrote:

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

--
Regards,
Tom Ogilvy


"tmwilkin" wrote:

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



All times are GMT +1. The time now is 08:09 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com