View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
NickHK NickHK is offline
external usenet poster
 
Posts: 4,391
Default Excel Worksheet Select (Activate ?) in VBS

I understood VBS does not have datatypes, everything is a variant (Or Object
is also available ?).

Anyway, you problem is caused by the Inputbox function returning a string;
check the Help.
So you are trying to set the Worksheets("1"), not Worksheets(1).

One solution is:
funWorksheetInput = CLng(InputBox( strSourceMessage, "WorkSheet Selection",
"1"))
or better to use objExcelApp.Inputbox, so you can limit the values to
Numbers with "Type:=1".

NickHK

"tbader01" wrote in message
...
Hello,
Thanks for your input, but I don't think VBS likes or accepts the "As
String" statement, since it gives me an error there. I think that might be

an
exclusive thing to VBA?
Were you able to copy and paste my code to see what I am seeing?
It just seems like it should work like I have it!
I guess I can use vartype to see just exactly what the function is
returning...
If you have any insights, please let me know!
Thanks!

"Gary''s Student" wrote:

Usually The argument to WORKSHEETS() is either a number, or a string or
string variable that represents the sheet in question.

Excel VBA may not know that the function will return a string.Perhaps

using:

Function funWorksheetInput() as string
.
.
.
.
Dim s as string
s=funWorksheetInput()
objWorkbooks.Worksheets(s).Activate
--
Gary's Student
gsnu200702


"tbader01" wrote:

Hello Everyone,

I have started the following code that will allow a user to drag and

drop an
XLS file ontop of this vbs script, and it will display a list of all

the
available worksheet names, which they can then choose the worksheet

number
and it will select that worksheet (take you to that worksheet).
This is part of a bigger idea I have in my head, but so far I am stuck

with
the following line:

objWorkbooks.Worksheets(funWorksheetInput).Select

Why can't I use my function as the input selection? I get "Script Out

of
Range"

I can do the following hard coding:
objWorkbooks.Worksheets(2).Select
or
objWorkbooks.Worksheets("Sheet3").Select

Also, what would that line look like if I used (or can I even use

that?):
objWorksheets(?)

Any help would be appreciated!

T

'vbs code start

Dim argsNamed, argsUnnamed
set argsNamed = WScript.Arguments.Named
set argsUnnamed = WScript.Arguments.Unnamed

Dim objExcelApp ' Excel application object
Set objExcelApp = WScript.CreateObject("Excel.Application")

objExcelApp.Visible = True

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

set objWorkbooks = objExcelApp.Workbooks.Open(argsUnnamed(file))
set objWorksheets = objWorkbooks.Worksheets

objWorkbooks.Worksheets(funWorksheetInput).Select

set objWorkbooks = Nothing
set objWorksheets = Nothing
set objRange = Nothing

Set objExcelApp = Nothing
Set argsNamed = Nothing
Set argsUnnamed = Nothing
Set fso = Nothing

WScript.Quit

Function funWorksheetInput
Dim arryWS, c, ws
arryWS = split( funGetWorksheetNames, ",")
For c = 0 to Ubound(arryWS) - 1
ws = ws & c+1 & "). " & arryWS(c)
ws = ws & vbCRLF
Next
strSourceMessage = "Select from one of the following worksheets:" &

vbCrLf &
ws

funWorksheetInput = InputBox( strSourceMessage, "WorkSheet Selection",

"1")
If funWorksheetInput = "" Then WScript.Quit(0)
End Function


Function funGetWorksheetNames
Dim s,ws
For s = 1 To objWorksheets.Count
ws = ws & objWorksheets(s).Name
ws = ws & ","
Next
funGetWorksheetNames = ws
End Function
'vbs code end