Jump to content
Macro Express Forums

rberq

Members
  • Posts

    1,200
  • Joined

  • Last visited

  • Days Won

    61

Everything posted by rberq

  1. Here are two macros to play with and refine as desired. They are not 100 percent checked out. The first just initializes some variables, and probably never has to be manually run. The second macro seems to be working pretty well. It dynamically tiles up to eight windows of any sort. When a window has focus, invoke the macro to add it to the list to be tiled. Up to three windows are tiled horizontally in one row. Four through eight windows are tiled in two rows. On my monitor, eight tiles are pretty small to work with. If you close any window previously selected, all other selected windows are dropped from the tiling. <COMMENT Value=" "/> <LOG ERRORS Filename="C:\\Temp\\MacroExpressProLogFiles\\MacroExpressPro_Macro_Log_File.txt" Hide_Errors="TRUE"/> <LOG MESSAGES Filename="C:\\Temp\\MacroExpressProLogFiles\\MacroExpressPro_Macro_Log_File.txt" Message="Macro executed: Tile_1" Stamp="TRUE"/> <COMMENT Value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> <KEYSTROKE SPEED Delay="10"/> <MOUSE SPEED Delay="30"/> <COMMENT Value=" "/> <COMMENT Value="Line Feed (New Line) character ascii 10"/> <VARIABLE SET TO ASCII CHAR Value="10" Destination="%LINEFEED%"/> <COMMENT Value="Carriage Return character ascii 13"/> <VARIABLE SET TO ASCII CHAR Value="13" Destination="%CARRIAGERETURN%"/> <COMMENT Value="Carriage Return / Line Feed combination characters ascii 13 + ascii 10"/> <VARIABLE SET TO ASCII CHAR Value="13" Destination="%CRLF%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%CRLF%" Variable="%LINEFEED%" NoEmbeddedVars="FALSE"/> <COMMENT Value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> <COMMENT Value=" "/> <COMMENT Value="Macro clears the variables used in cascading windows, and saves them for use by the cascading macro"/> <COMMENT Value=" "/> <COMMENT Value="Clear variables previously stored, if any, then save them for use by tiling macro"/> <REPEAT START Start="1" Step="1" Count="9" Save="TRUE" Variable="%indx%"/> <IF VARIABLE Variable="%indx%" Condition="\x00" Value="9" IgnoreCase="FALSE"/> <VARIABLE SET STRING Option="\x00" Destination="%w_name[%indx%]%" Value="End of Table" NoEmbeddedVars="FALSE" _COMMENT="array"/> <ELSE/> <VARIABLE SET STRING Option="\x00" Destination="%w_name[%indx%]%" Value="*" NoEmbeddedVars="FALSE" _COMMENT="array"/> <END IF/> <VARIABLE SET INTEGER Option="\x00" Destination="%w_top[%indx%]%" Value="0" _COMMENT="array"/> <VARIABLE SET INTEGER Option="\x00" Destination="%w_left[%indx%]%" Value="0" _COMMENT="array"/> <VARIABLE SET INTEGER Option="\x00" Destination="%w_width[%indx%]%" Value="0" _COMMENT="array"/> <VARIABLE SET INTEGER Option="\x00" Destination="%w_height[%indx%]%" Value="0" _COMMENT="array"/> <END REPEAT/> <COMMENT Value=" "/> <VARIABLE SAVE Option="\x01"/> <VARIABLE SAVE Option="\x02"/> <COMMENT Value=" "/> <VARIABLE SET STRING Option="\x00" Destination="%textbox%" NoEmbeddedVars="FALSE" _COMMENT="Diagnostic display of variables"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value="Macro \"Tile_1\" has reset list of windows to be tiled" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <REPEAT START Start="1" Step="1" Count="9" Save="TRUE" Variable="%indx%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%w_name[%indx%]%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_top[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_left[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_width[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_height[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <END REPEAT/> <TEXT BOX DISPLAY Title="Diagnostics" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 %textbox%\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="923" Height="440" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0"/> <COMMENT Value=" "/> <MACRO RETURN/> <COMMENT Value=" "/> <COMMENT Value=" "/> <LOG ERRORS Filename="C:\\Temp\\MacroExpressProLogFiles\\MacroExpressPro_Macro_Log_File.txt" Hide_Errors="TRUE"/> <LOG MESSAGES Filename="C:\\Temp\\MacroExpressProLogFiles\\MacroExpressPro_Macro_Log_File.txt" Message="Macro executed: Tile_2" Stamp="TRUE"/> <COMMENT Value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> <KEYSTROKE SPEED Delay="10"/> <MOUSE SPEED Delay="30"/> <COMMENT Value=" "/> <COMMENT Value="Line Feed (New Line) character ascii 10"/> <VARIABLE SET TO ASCII CHAR Value="10" Destination="%LINEFEED%"/> <COMMENT Value="Carriage Return character ascii 13"/> <VARIABLE SET TO ASCII CHAR Value="13" Destination="%CARRIAGERETURN%"/> <COMMENT Value="Carriage Return / Line Feed combination characters ascii 13 + ascii 10"/> <VARIABLE SET TO ASCII CHAR Value="13" Destination="%CRLF%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%CRLF%" Variable="%LINEFEED%" NoEmbeddedVars="FALSE"/> <COMMENT Value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> <COMMENT Value=" "/> <COMMENT Value="Macro tiles present window and all others previously selected for tiling"/> <COMMENT Value=" "/> <COMMENT Value="Restore variables previously stored "/> <VARIABLE RESTORE Option="\x01"/> <VARIABLE RESTORE Option="\x02"/> <COMMENT Value=" "/> <COMMENT Value="If any previously selected window has been closed, clear entire table of windows "/> <COMMENT Value="Also clear if slot 9 of table does not equal \"End of Table\""/> <IF VARIABLE Variable="%w_name[9]%" Condition="\x01" Value="End of Table" IgnoreCase="FALSE" _COMMENT="is this table slot empty (asterisk)???"/> <MACRO RUN Use_ID="FALSE" Name="Tile_1" ID="-1" Wait="TRUE" _COMMENT="Run macro that clears table"/> <VARIABLE RESTORE Option="\x01"/> <VARIABLE RESTORE Option="\x02"/> <END IF/> <REPEAT START Start="1" Step="1" Count="8" Save="TRUE" Variable="%indx%"/> <IF VARIABLE Variable="%w_name[%indx%]%" Condition="\x01" Value="*" IgnoreCase="FALSE" _COMMENT="is this table slot empty (asterisk)???"/> <IF WINDOW Option="\x01" Title="%w_name[%indx%]%" Partial="FALSE" Wildcards="FALSE"/> <ELSE/> <MACRO RUN Use_ID="FALSE" Name="Tile_1" ID="-1" Wait="TRUE" _COMMENT="Run macro that clears table"/> <VARIABLE RESTORE Option="\x01"/> <VARIABLE RESTORE Option="\x02"/> <REPEAT EXIT/> <END IF/> <END IF/> <END REPEAT/> <COMMENT Value=" "/> <COMMENT Value="Find name of present window, store name in array if not already there "/> <REPEAT WITH WINDOWS ToRetrieve="\x01" SortOrder="\x01" Destination="%present_window%"/> <IF WINDOW Option="\x00" Title="%present_window%" Partial="FALSE" Wildcards="FALSE"/> <TEXT BOX DISPLAY Title="Diagnostics" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 %present_window%\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0" _ENABLED="FALSE"/> <REPEAT START Start="1" Step="1" Count="8" Save="TRUE" Variable="%indx%"/> <IF VARIABLE Variable="%w_name[%indx%]%" Condition="\x00" Value="%present_window%" IgnoreCase="FALSE" _COMMENT="present window already in table???"/> <REPEAT EXIT/> <ELSE/> <IF VARIABLE Variable="%w_name[%indx%]%" Condition="\x00" Value="*" IgnoreCase="FALSE" _COMMENT="is this table slot empty (asterisk)???"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%w_name[%indx%]%" Variable="%present_window%" NoEmbeddedVars="FALSE" _COMMENT="yes, empty slot, insert name of present window into table"/> <REPEAT EXIT/> <END IF/> <END IF/> <END REPEAT/> <END IF/> <END REPEAT/> <COMMENT Value=" "/> <COMMENT Value="AT THIS POINT THE W_NAME ARRAY CONTAINS PREVIOUSLY SELECTED WINDOWS PLUS THE ONE SELECTED BY THIS RUN OF THE MACRO "/> <COMMENT Value=" "/> <COMMENT Value="Count how many window have been selected for tiling, previously and now "/> <VARIABLE SET INTEGER Option="\x00" Destination="%win_count%" Value="0"/> <REPEAT START Start="1" Step="1" Count="8" Save="TRUE" Variable="%indx%"/> <IF VARIABLE Variable="%w_name[%indx%]%" Condition="\x01" Value="*" IgnoreCase="FALSE" _COMMENT="is this table slot empty (asterisk)???"/> <VARIABLE MODIFY INTEGER Option="\x07" Destination="%win_count%" _COMMENT="no, add to count of windows to be tiled"/> <END IF/> <END REPEAT/> <IF VARIABLE Variable="%win_count%" Condition="\x00" Value="0" IgnoreCase="FALSE" _COMMENT="If no windows to be tiled, exit from macro"/> <VARIABLE SAVE Option="\x01" _COMMENT="Save updated state of all variables "/> <VARIABLE SAVE Option="\x02"/> <MACRO RETURN/> <END IF/> <TEXT BOX DISPLAY Title="Diagnostics" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 %win_count% windows to be tiled\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0" _ENABLED="FALSE"/> <COMMENT Value=" "/> <COMMENT Value="Get display width and height, hard-code base location for top-left tile "/> <VARIABLE SET INTEGER Option="\x06" Destination="%scrn_width%"/> <VARIABLE SET INTEGER Option="\x07" Destination="%scrn_height%"/> <VARIABLE SET INTEGER Option="\x00" Destination="%tile_base_top%" Value="0" _COMMENT="Change this if you want tiling to start at other than 0,0"/> <VARIABLE SET INTEGER Option="\x00" Destination="%tile_base_left%" Value="0" _COMMENT="Change this if you want tiling to start at other than 0,0"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%scrn_height%" Value1="%scrn_height%" Value2="%tile_base_top%"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%scrn_width%" Value1="%scrn_width%" Value2="%tile_base_left%"/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value="Compute size for tiling maximum four windows across and two down "/> <IF VARIABLE Variable="%win_count%" Condition="\x00" Value="1" IgnoreCase="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_width%" Value1="%scrn_width%" Value2="2"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_height%" Value1="%scrn_height%" Value2="1"/> <VARIABLE SET INTEGER Option="\x00" Destination="%tile_rows%" Value="1"/> <END IF/> <IF VARIABLE Variable="%win_count%" Condition="\x00" Value="2" IgnoreCase="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_width%" Value1="%scrn_width%" Value2="2"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_height%" Value1="%scrn_height%" Value2="1"/> <VARIABLE SET INTEGER Option="\x00" Destination="%tile_rows%" Value="1"/> <END IF/> <IF VARIABLE Variable="%win_count%" Condition="\x00" Value="3" IgnoreCase="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_width%" Value1="%scrn_width%" Value2="3"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_height%" Value1="%scrn_height%" Value2="1"/> <VARIABLE SET INTEGER Option="\x00" Destination="%tile_rows%" Value="1"/> <END IF/> <IF VARIABLE Variable="%win_count%" Condition="\x00" Value="4" IgnoreCase="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_width%" Value1="%scrn_width%" Value2="2"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_height%" Value1="%scrn_height%" Value2="2"/> <VARIABLE SET INTEGER Option="\x00" Destination="%tile_rows%" Value="2"/> <END IF/> <IF VARIABLE Variable="%win_count%" Condition="\x03" Value="4" IgnoreCase="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_width%" Value1="%scrn_width%" Value2="4"/> <VARIABLE MODIFY INTEGER Option="\x03" Destination="%tile_height%" Value1="%scrn_height%" Value2="2"/> <VARIABLE SET INTEGER Option="\x00" Destination="%tile_rows%" Value="2"/> <END IF/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value="Plug winlow locations and sizes into arrays "/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%" _COMMENT="set leftmost tile position to negative location"/> <IF VARIABLE Variable="%win_count%" Condition="\x03" Value="0" IgnoreCase="FALSE" _COMMENT="If no windows to be tiled, exit macro."/> <ELSE/> <VARIABLE SAVE Option="\x01" _COMMENT="Save updated state of all variables "/> <VARIABLE SAVE Option="\x02"/> <MACRO RETURN/> <END IF/> <REPEAT START Start="1" Step="1" Count="%win_count%" Save="TRUE" Variable="%indx%"/> <VARIABLE MODIFY INTEGER Option="\x00" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%"/> <IF VARIABLE Variable="%w_name[%indx%]%" Condition="\x00" Value="*" IgnoreCase="FALSE" _COMMENT="is this table slot empty (asterisk)??? If so, quit tiling."/> <REPEAT EXIT/> <END IF/> <IF VARIABLE Variable="%tile_rows%" Condition="\x00" Value="2" IgnoreCase="FALSE" _COMMENT="If done with top row of 2 out of 4 total tiles, reset tile location pointers for bottom row of tiles"/> <AND/> <IF VARIABLE Variable="%win_count%" Condition="\x00" Value="4" IgnoreCase="FALSE"/> <AND/> <IF VARIABLE Variable="%indx%" Condition="\x00" Value="3" IgnoreCase="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%"/> <VARIABLE MODIFY INTEGER Option="\x00" Destination="%tile_base_top%" Value1="%tile_base_top%" Value2="%tile_height%"/> <END IF/> <IF VARIABLE Variable="%tile_rows%" Condition="\x00" Value="2" IgnoreCase="FALSE" _COMMENT="If done with top row of 4 out of more than 4 total tiles, reset tile location pointers for bottom row of tiles"/> <AND/> <IF VARIABLE Variable="%win_count%" Condition="\x03" Value="4" IgnoreCase="FALSE"/> <AND/> <IF VARIABLE Variable="%indx%" Condition="\x00" Value="5" IgnoreCase="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%"/> <VARIABLE MODIFY INTEGER Option="\x01" Destination="%tile_base_left%" Value1="%tile_base_left%" Value2="%tile_width%"/> <VARIABLE MODIFY INTEGER Option="\x00" Destination="%tile_base_top%" Value1="%tile_base_top%" Value2="%tile_height%"/> <END IF/> <VARIABLE MODIFY INTEGER Option="\x06" Destination="%w_top[%indx%]%" Variable="%tile_base_top%"/> <VARIABLE MODIFY INTEGER Option="\x06" Destination="%w_left[%indx%]%" Variable="%tile_base_left%"/> <VARIABLE MODIFY INTEGER Option="\x06" Destination="%w_width[%indx%]%" Variable="%tile_width%"/> <VARIABLE MODIFY INTEGER Option="\x06" Destination="%w_height[%indx%]%" Variable="%tile_height%"/> <END REPEAT/> <COMMENT Value=" "/> <COMMENT Value="Place the window tiles on the screen "/> <MINIMIZE ALL WINDOWS/> <REPEAT START Start="1" Step="1" Count="8" Save="TRUE" Variable="%indx%"/> <IF VARIABLE Variable="%w_name[%indx%]%" Condition="\x00" Value="*" IgnoreCase="FALSE" _COMMENT="is this table slot empty (asterisk)??? If so, quit tiling."/> <REPEAT EXIT/> <END IF/> <WINDOW ACTIVATE Title="%w_name[%indx%]%" Exact_Match="TRUE" Wildcards="FALSE" _IGNORE="0x0006"/> <WINDOW SHOW Option="\x01" Title="%w_name[%indx%]%" Partial="FALSE" Wildcards="FALSE" _IGNORE="0x0006"/> <DELAY Flags="\x13" Time="999" _ENABLED="FALSE"/> <WINDOW MINIMIZE Option="\x01" Title="%w_name[%indx%]%" Partial="FALSE" Wildcards="FALSE" _IGNORE="0x0006" _ENABLED="FALSE"/> <WINDOW MOVE AND SIZE Use_Current="FALSE" Title="%w_name[%indx%]%" Exact_Match="TRUE" Use_Wildcards="FALSE" Left="%w_left[%indx%]%" Top="%w_top[%indx%]%" Width="%w_width[%indx%]%" Height="%w_height[%indx%]%" Monitor="0"/> <WINDOW RESIZE Option="\x01" Title="%w_name[%indx%]%" Partial="FALSE" Wildcards="FALSE" Method="\x00" Width="%tile_width%" Height="%tile_height%" _IGNORE="0x0006" _ENABLED="FALSE"/> <WINDOW REPOSITION Option="\x01" Title="%w_name[%indx%]%" Partial="FALSE" Wildcards="FALSE" Method="\x00" Left="%tile_base_left%" Top="%tile_base_top%" Monitor="0" _IGNORE="0x0006" _ENABLED="FALSE"/> <DELAY Flags="\x13" Time="999" _ENABLED="FALSE"/> <TEXT BOX DISPLAY Title="halt" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 Press Enter to continue with next window\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0" _ENABLED="FALSE"/> <END REPEAT/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value=" "/> <COMMENT Value="Save updated state of all variables "/> <VARIABLE SAVE Option="\x01" _COMMENT="Save updated state of all variables "/> <VARIABLE SAVE Option="\x02"/> <COMMENT Value=" "/> <COMMENT Value="Diagnostic display of variables "/> <VARIABLE SET STRING Option="\x00" Destination="%textbox%" NoEmbeddedVars="FALSE" _COMMENT="Diagnostic display of variables"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value="tile rows = " NoEmbeddedVars="FALSE" _COMMENT="************************"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%tile_rows%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value="tile height = " NoEmbeddedVars="FALSE" _COMMENT="************************"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%tile_height%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value="tile width = " NoEmbeddedVars="FALSE" _COMMENT="************************"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%tile_width%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value="Window Name - Top - Left - Height - Width" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <REPEAT START Start="1" Step="1" Count="8" Save="TRUE" Variable="%indx%" _COMMENT="************************"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%w_name[%indx%]%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_top[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_left[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_height[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%textbox%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x04" Destination="%w_width[%indx%]%" Variable="%text%"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%text%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%textbox%" Variable="%CRLF%" NoEmbeddedVars="FALSE"/> <END REPEAT/> <TEXT BOX DISPLAY Title="Diagnostics" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 %textbox%\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="923" Height="440" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0" _ENABLED="FALSE"/> <COMMENT Value=" "/> <MACRO RETURN/> <COMMENT Value=" "/>
  2. After the web site has loaded, the macro can type ALT-d to highlight the URL. Then copy the URL to clipboard, set a text variable from the clipboard, and check for the value of x. Something like this: REPEAT UNTIL COUNT NOT EQUAL COUNT (that is, repeat forever) LOAD WEBSITE WAIT FOR WEBSITE TO LOAD TYPE ALT-d (highlights the URL) TYPE CTRL-c (copy URL to clipboard) VARIABLE SET STRING URLNAME FROM CLIPBOARD REMOVE ALL EXCEPT LAST CHARACTER FROM URLNAME IF URLNAME EQUALS 1 THRU 9 ELSE REPEAT EXIT ENDIF END REPEAT
  3. Maybe a difference in ME versions? I am running ME Pro 4.9.1.1. I can't make it fail, saving and restoring many million-byte variables and immediately checking the result of the restore, with no delay allowed. <COMMENT Value="Make lots of big variables to be saved and restored"/> <VARIABLE SET STRING Option="\x00" Destination="%many_bytes%" Value="a" NoEmbeddedVars="FALSE"/> <REPEAT START Start="1" Step="1" Count="20" Save="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%many_bytes%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <END REPEAT/> <TEXT BOX DISPLAY Title="Diagnostics" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 many_bytes = %many_bytes%\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="1195" Height="483" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0" _ENABLED="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%a%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%b%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%c%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%d%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%e%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%f%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%g%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%h%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%i%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%j%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%k%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%l%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%m%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%n%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%o%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%p%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%q%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%r%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%s%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%t%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%u%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%v%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%w%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%x%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%y%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%z%" Variable="%many_bytes%" NoEmbeddedVars="FALSE"/> <COMMENT Value=" "/> <VARIABLE SET INTEGER Option="\x0D" Destination="%length%" Text_Variable="%z%"/> <TEXT BOX DISPLAY Title="Diagnostics" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 length of z = %length%\r\n\\par z = %many_bytes%\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="1195" Height="483" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0" _ENABLED="FALSE"/> <COMMENT Value="Make two variables to be tested "/> <VARIABLE SET STRING Option="\x00" Destination="%clip1%" Value="clip1" NoEmbeddedVars="FALSE"/> <VARIABLE SET STRING Option="\x00" Destination="%clip2%" Value="clip2" NoEmbeddedVars="FALSE"/> <COMMENT Value=" "/> <VARIABLE SAVE Option="\x00"/> <COMMENT Value=" "/> <VARIABLE SET STRING Option="\x00" Destination="%clip1%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE SET STRING Option="\x00" Destination="%clip2%" Value=" " NoEmbeddedVars="FALSE"/> <VARIABLE RESTORE Option="\x01"/> <VARIABLE MODIFY STRING Option="\x08" Destination="%clip2%" Variable="%clip1%" NoEmbeddedVars="FALSE"/> <COMMENT Value=" "/> <TEXT BOX DISPLAY Title="Diagnostics" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 clip1=%clip1%\r\n\\par clip2=%clip2%\\f1 \r\n\\par \r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0"/> <COMMENT Value=" "/> <MACRO RETURN/>
  4. I like your idea of the right arrow key as a visual cue. Also putting a delay after the Clipboard Copy, lest the set-string-from-clipboard should happen before the clipboard has been populated. However, I would be shocked and dismayed if ME requires an explicit delay after a Restore Variables command. (Though I confess I haven't tested it.) If there is a timing problem, perhaps a longer Keystroke Speed command would make the typing more reliable.
  5. If you wrote the ctrl-1 macro, then copied it to make the ctrl-2 macro, then ctrl-2 will still contain variable %Clip1% with a null value. So when ctrl-2 saves the variables, %Clip2% will be saved correctly, but %Clip1% will be saved as null, and subsequently restored as null. So ctrl-2 will in fact wipe out %Clip1%. Likewise, running macro ctrl-3 will wipe out %Clip1% and %Clip2%, ctrl-4 will wipe out %Clip1% and %Clip2% and %Clip3%, and so on. Click on the Variables tab in your ctrl-x macros and if there are "unauthorized" %Clip-x% variables, delete them. If you coded all the ctrl-x macros from scratch, then ignore everything I said.
  6. How about using a single macro to copy all four cells: Manually click into cell B1 Ctrl-1 to start macro Macro types Ctrl-c to copy the cell into clipboard Macro saves clipboard to T[1] variable Macro types ESC to exit from copy mode Macro types ArrowRight several times to get to cell F1 Macro types Ctrl-c to copy the cell into clipboard Macro saves clipboard to [T2] variable Macro types ESC to exit from copy mode Macro types ArrowRight several times to get to cell H1 Continue with similar coding until the four cells have been copied into T[1] through T[4] Likewise, your second macro can type T[1] into the cell you manually select, navigate by typing ArrowRight to the next cell, type T[2] into that cell, and so on. Let the two macros do the navigation from cell to cell, rather than you doing it manually.
  7. Clever. I didn't think of "undo". I like your third solution best, because there is no need to navigate through secondary panels. Just a couple quick keystrokes and it's done. In case the view has been previously shifted so the active cell is not visible, adding the ArrowRight-Arrow left before selecting row and column will bring it back into view.
  8. This version works very fast (again, using Excel 2010.) The hotkey to activate it is RightArrow. The macro clears the background color (if any) of the current cell, TABs right to the next cell, and sets background color red. Similar macros could be written for left/up/down arrows, so that the moved-to cell will be colored and others not colored. In England, they will be coloured / not coloured. Note keystroke speed zero -- Excel is successfully buffering keystrokes, which helps the process run fast. There is one problem with this macro -- notice that the macro TABs to the next cell rather than simulating right arrow. That's because a simulated right arrow is the hotkey that starts the macro running again, and again, and again .... Using TAB avoids the problem for left/right movement, but I'm not sure what to do about up and down movement. // // Highlight Excel cell by making its background red Keystroke Speed: 0 milliseconds // clear color of current cell, if any Text Type (Simulate Keystrokes): <CTRLD>1<CTRLU> // format cells Text Type (Simulate Keystrokes): pff // assure "fill" tab Text Type (Simulate Keystrokes): <ALTD>c<ALTU> // background color Text Type (Simulate Keystrokes): <ENTER> // select no color Text Type (Simulate Keystrokes): <TAB><TAB><TAB><TAB><TAB><ENTER> // tab to OK and exit // arrow right to next cell Text Type (Simulate Keystrokes): <TAB> // set color of next cell to red Text Type (Simulate Keystrokes): <CTRLD>1<CTRLU> // format cells Text Type (Simulate Keystrokes): pff // assure "fill" tab Text Type (Simulate Keystrokes): <ALTD>c<ALTU> // background color Text Type (Simulate Keystrokes): <ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ENTER> // select red Text Type (Simulate Keystrokes): <TAB><TAB><TAB><TAB><TAB><ENTER> // tab to OK and exit Macro Return // <COMMENT Value=" "/> <COMMENT Value="Highlight Excel cell by making its background red "/> <KEYSTROKE SPEED Delay="0"/> <COMMENT Value="clear color of current cell, if any "/> <TEXT TYPE Action="0" Text="<CTRLD>1<CTRLU>" _COMMENT="format cells"/> <TEXT TYPE Action="0" Text="pff" _COMMENT="assure \"fill\" tab"/> <TEXT TYPE Action="0" Text="<ALTD>c<ALTU>" _COMMENT="background color"/> <TEXT TYPE Action="0" Text="<ENTER>" _COMMENT="select no color"/> <TEXT TYPE Action="0" Text="<TAB><TAB><TAB><TAB><TAB><ENTER>" _COMMENT="tab to OK and exit"/> <COMMENT Value="arrow right to next cell"/> <TEXT TYPE Action="0" Text="<TAB>"/> <COMMENT Value="set color of next cell to red"/> <TEXT TYPE Action="0" Text="<CTRLD>1<CTRLU>" _COMMENT="format cells"/> <TEXT TYPE Action="0" Text="pff" _COMMENT="assure \"fill\" tab"/> <TEXT TYPE Action="0" Text="<ALTD>c<ALTU>" _COMMENT="background color"/> <TEXT TYPE Action="0" Text="<ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ENTER>" _COMMENT="select red"/> <TEXT TYPE Action="0" Text="<TAB><TAB><TAB><TAB><TAB><ENTER>" _COMMENT="tab to OK and exit"/> <MACRO RETURN/> <COMMENT Value=" "/>
  9. In Excel 2010, these keystrokes enter the "format cells" dialog and change the current cell background color to red. Stands out nicely. Would probably be a different key sequence for different generations of Excel. Also we would want a second macro to change the cell color back to No Color. I wanted to use "Background color" instead of "Fill effects" but, for reasons unknown, ALT-c doesn't work to get to "Background color". It seems to be a feature of Excel that non-intuitive navigation is the rule. Incidentally, Excel 2010 places a heavy border around the current cell instead of requiring an up-to-date eyeglass prescription like later Excel versions. // Text Type (Simulate Keystrokes): <CTRLD>1<CTRLU> // format cells Delay: 250 milliseconds Text Type (Simulate Keystrokes): p // protection tab Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ARROW LEFT> // left to fill tab Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ALTD>i<ALTU> // fill effects Delay: 250 milliseconds Text Type (Simulate Keystrokes): <TAB><TAB> // tabs and arrows to select fill colors Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN> Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ENTER> Delay: 250 milliseconds Text Type (Simulate Keystrokes): <TAB> Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN><ARROW DOWN> Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ENTER> Delay: 250 milliseconds Text Type (Simulate Keystrokes): <TAB><TAB> Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ENTER> // apply colors Delay: 250 milliseconds Text Type (Simulate Keystrokes): <TAB><TAB><TAB><TAB> Delay: 250 milliseconds Text Type (Simulate Keystrokes): <ENTER> // done Delay: 250 milliseconds Macro Return //
  10. Sounds like you have it well in hand. Let us know how it works out with Team Viewer or VNC.
  11. Sounds very interesting. I am kind of thinking out loud here, so what follows may be useless. Could you use the Windows Task Scheduler, on the server, to start Macro Express? Or just start ME when the server starts up. The macro itself could be started by the scheduler within Macro Express. Or (see Command Line Options in Macro Express Help) the /A option can start the macro with program MEPROC.EXE via a Windows-scheduled batch file. I have run macros repeatedly or continuously on a server using those methods. Mine did not use the mouse/keyboard/monitor, however. I'm not sure whether this would work in your case. Since ME would be starting and running independently of your remote session, I don't know whether it would use imaginary peripherals. Maybe you could just buy a cheap PC and dedicate it to be always remotely connected to the server, so as to avoid impacting your primary machine? Or just forget about the VPS server and run the macro on the dedicated PC?
  12. It sounds like the macro is to run only when your remote connection is open. Yes? No? Could you start Macro Express itself right after (or as part of) initiating the connection, and kill it when disconnecting? Or does the macro need to continue running after you disconnect, doing stuff that no longer needs keyboard/mouse/monitor?
  13. Sometimes tabbing from one field to the next doesn't take the fields in the order that you see them on the screen, but in a seemingly random order (but not really random). So successive TABs might go from the top of the window to some field near the bottom then back to the top. If the window is bigger than the screen, that can make it jump around like you describe. You might be able to use the browser's "find" command to get where you want to go. For example, one of my macros uses the following sequence to find "forgot your password?" text within the window, then tabs backwards to get to the fields where name and password are typed. Text Type (Simulate Keystrokes): 'forgot your password // single quote initiates Firefox Quick Search for hyperlink text Delay: 250 milliseconds Text Type (Simulate Keystrokes): <SHIFTD><TAB><TAB><TAB><TAB><SHIFTU> Delay: 250 milliseconds Text Type (Simulate Keystrokes): signonname<TAB> Text Type (Simulate Keystrokes): password<TAB>
  14. TAB ten times is definitely better, if that's all you have to do. I thought you were having trouble getting focus on the appropriate window, or making sure it had loaded, before you could even do the tabs -- that's why the other suggestions. The command "Get Pixel Color" is under System commands. I agree it's hard to find -- there are several commands I have trouble locating whenever I want to use them. Get Pixel Color can be very useful; play around with it a bit when you have the time.
  15. If the new window always opens in a predictable location, perhaps you could check for a unique color at one or more places to test whether it has opened successfully. Then maybe click the mouse within the window to make it active, and then TAB to the date field. You will probably need some "delay" commands among the color checks and TABs, to keep the macro from outrunning the screen changes.
  16. In Options | Preferences you can set a hot key that aborts running macros. You could prompt for a text variable rather than an integer. Then use Variable Modify String to extract and examine individual digits. After verifying, there is an option of Variable Modify String to convert string to integer.
  17. Use two macros. The first macro (example below) will prompt for the number of times to run the second macro, then run it. // Variable Set Integer %count%: Prompt ["set integer" option to prompt for number of repetitions] Repeat Start (Repeat %count% times) [run the second macro multiple times] Macro Run: macro_2 End Repeat // Edit: I see you posted this in the Macro Express 3 forum. You will need to use one of the pre-defined integer variable (N1, N2, N3....) instead of %count% in my example.
  18. Nothing improper about using the mouse -- it's fast, and if it works reliably then why not? You might need a quarter-second delay after the mouse click if the system doesn't respond instantly.
  19. You could put that logic into a "REPEAT 1000 times" loop. It would be pretty time-consuming to run. However, the biggest problem is that something would get out-of-sync long before the macro finished a thousand repetitions. Timing issues within Windows will doom the process, where just a single tab from field to field fails, or a single copy-to-clipboard takes too long, or alt+tab to the other window is too slow. I would recommend exporting the whole spreadsheet to a comma delimited file -- either manually, or code the macro to do it -- then use ASCII FILE PROCESS to read the file, extract the data fields, and paste/type them into the web form. You may still have timing or other issues on the web side, but accessing the data accurately will be vastly faster and more reliable than pulling fields one at a time from the spreadsheet. Macro Express Help has a pretty good explanation of ASCII FILE PROCESS.
  20. It's hardly worth sharing two lines of code. For the application where it pops up frequently, the box has its own window title, so that's what triggers the macro. Then it's just a mouse move relative to the window, and a mouse click. This works for the simplified Captcha box only -- no good for the version where you have to figure out how many squares contain trees or motorcycles or traffic lights. Contrary to Asimov's laws of robotics, my robot is completely amoral and willing to lie.😮
  21. Just feeling contrary, so I wrote a macro -- I prefer to call it a robot😉 -- that detects when this box appears, and checkmarks it.
  22. Set counter to zero Repeat 500 times Add one to counter <TEXTTYPE:<CTRL>c Repeat counter times <TEXTTYPE:<ENTER> Repeat end Repeat counter times <TEXTTYPE:<ARROW UP> Repeat end Repeat end Watch out for timing issues -- if the macro typing gets ahead of how fast Excel can handle it, you will not be in a happy place.😞
  23. If you suspect an invisible (usually leading or trailing) character, you can display its invisibleness (new word, invented today!) in a text box. Let's say you wonder about variable %text% which appears to contain ABC. In a text box, display >>>%text%<<<. If it really contains only ABC, the display will be >>>ABC<<<. No "white space" between the variable and the brackets. If there is a non-displayable character at beginning or end, the display will be >>> ABC<<< or >>>ABC <<<
  24. Can it be opened via keystrokes, rather than by clicking on it? Here's a Windows option I had to turn on at some point.
  25. Or, can you use the menu -- how did you get the drop-down list under Convert to display? Text type <ALT>c to open the Convert options short delay Text type f
×
×
  • Create New...