![]() |
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 |
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 |
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 |
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 |
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 |
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