/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Dynamisk objecter
Fra : Ukendt


Dato : 20-01-08 10:01

Jeg har forgæves forsøgt at arbejde med dynamiske objecter i VB (under
Excel 2003), men det er ikke lykkedes at få det til at fungere, måske
nogen har en idé til hvad jeg gør galt...

Følgende er et kode eksempel, hvor jeg forsøger tildele en variable
værdi til et object således, at kan udlæse forskellige navne på knapper
jeg har placeret i et worksheet og gemme dem i et array.



Private Sub TestFunction()

Dim V As Object
Dim TableCaption(3) As String

For i = 1 To 3
V = "Sheet1.Table" & i
TableCaption(i) = CallByName(V, "Caption", VbGet)
Next i

End Sub


Når jeg kører ovenstående kode, får jeg meddelelsen: "Runtime Error 91,
Object variable or With block variable not set". Jeg tror problemet er
relateret til variable objecter, hvor ovenstående eksempel vist nok
kræver "late binding", men uanset hvor meget jeg leder på microsofts
support side, har jeg ikke findet et svar der bringer mig videre.

Henrik

--
Posted via a free Usenet account from http://www.teranews.com


 
 
Per Jessen (20-01-2008)
Kommentar
Fra : Per Jessen


Dato : 20-01-08 11:47

Hej Henrik

Når man skal tildele variable af typen Object og Range m.fl. værdi skal man
skrive Set foran variablen.

Set V = "Sheet1.Table" & i

Mvh

Per

"remove "at"" <"hz\"at\"post12.tele.dk (remove \"at\")"> skrev i en
meddelelse news:47930206$0$25989$88260bb3@free.teranews.com...
> Jeg har forgæves forsøgt at arbejde med dynamiske objecter i VB (under
> Excel 2003), men det er ikke lykkedes at få det til at fungere, måske
> nogen har en idé til hvad jeg gør galt...
>
> Følgende er et kode eksempel, hvor jeg forsøger tildele en variable værdi
> til et object således, at kan udlæse forskellige navne på knapper jeg har
> placeret i et worksheet og gemme dem i et array.
>
>
>
> Private Sub TestFunction()
>
> Dim V As Object
> Dim TableCaption(3) As String
>
> For i = 1 To 3
> V = "Sheet1.Table" & i
> TableCaption(i) = CallByName(V, "Caption", VbGet)
> Next i
>
> End Sub
>
>
> Når jeg kører ovenstående kode, får jeg meddelelsen: "Runtime Error 91,
> Object variable or With block variable not set". Jeg tror problemet er
> relateret til variable objecter, hvor ovenstående eksempel vist nok kræver
> "late binding", men uanset hvor meget jeg leder på microsofts support
> side, har jeg ikke findet et svar der bringer mig videre.
>
> Henrik
>
> --
> Posted via a free Usenet account from http://www.teranews.com
>



Ukendt (20-01-2008)
Kommentar
Fra : Ukendt


Dato : 20-01-08 14:39

Hej Per

Tak for svaret - jeg har skrevet "Set" foran "V" som du beskrev, det
betyder imidlertid at jeg for en anden fejl, nemlig: "Runtime Error
'424': Object required".

Noget tyder på, at

"Sheet1.Table" & i

ikke blive accepteret som en gyldig variable, eller også er det fordi
jeg ikke må deklarere en variable som en string og efterfølgende benytte
den som et object, men i så fald, hvad skal jeg da deklarere variablen som?

Jeg er lidt på bar bund med hvordan jeg kommer rundt om dette problem.

Mvh.
Henrik


Per Jessen wrote:
> Hej Henrik
>
> Når man skal tildele variable af typen Object og Range m.fl. værdi skal man
> skrive Set foran variablen.
>
> Set V = "Sheet1.Table" & i
>
> Mvh
>
> Per
>
> "remove "at"" <"hz\"at\"post12.tele.dk (remove \"at\")"> skrev i en
> meddelelse news:47930206$0$25989$88260bb3@free.teranews.com...
>> Jeg har forgæves forsøgt at arbejde med dynamiske objecter i VB (under
>> Excel 2003), men det er ikke lykkedes at få det til at fungere, måske
>> nogen har en idé til hvad jeg gør galt...
>>
>> Følgende er et kode eksempel, hvor jeg forsøger tildele en variable værdi
>> til et object således, at kan udlæse forskellige navne på knapper jeg har
>> placeret i et worksheet og gemme dem i et array.
>>
>>
>>
>> Private Sub TestFunction()
>>
>> Dim V As Object
>> Dim TableCaption(3) As String
>>
>> For i = 1 To 3
>> V = "Sheet1.Table" & i
>> TableCaption(i) = CallByName(V, "Caption", VbGet)
>> Next i
>>
>> End Sub
>>
>>
>> Når jeg kører ovenstående kode, får jeg meddelelsen: "Runtime Error 91,
>> Object variable or With block variable not set". Jeg tror problemet er
>> relateret til variable objecter, hvor ovenstående eksempel vist nok kræver
>> "late binding", men uanset hvor meget jeg leder på microsofts support
>> side, har jeg ikke findet et svar der bringer mig videre.
>>
>> Henrik
>>
>> --
>> Posted via a free Usenet account from http://www.teranews.com
>>
>
>

--
Posted via a free Usenet account from http://www.teranews.com


soren (20-01-2008)
Kommentar
Fra : soren


Dato : 20-01-08 19:41

Det er vistnok først inde i løkken, du skal bruge
Set V = New "Sheet1.Table" & i
New, skal vistnok med.
Dim V As Object før løkken, er vist rigtig nok.
Du ka da prøve!.
soren

"remove "at"" <"hz\"at\"post12.tele.dk (remove \"at\")"> skrev i en
meddelelse news:47930206$0$25989$88260bb3@free.teranews.com...
> Jeg har forgæves forsøgt at arbejde med dynamiske objecter i VB (under
> Excel 2003), men det er ikke lykkedes at få det til at fungere, måske
> nogen har en idé til hvad jeg gør galt...
>
> Følgende er et kode eksempel, hvor jeg forsøger tildele en variable værdi
> til et object således, at kan udlæse forskellige navne på knapper jeg har
> placeret i et worksheet og gemme dem i et array.
>
>
>
> Private Sub TestFunction()
>
> Dim V As Object
> Dim TableCaption(3) As String
>
> For i = 1 To 3
> V = "Sheet1.Table" & i
> TableCaption(i) = CallByName(V, "Caption", VbGet)
> Next i
>
> End Sub
>
>
> Når jeg kører ovenstående kode, får jeg meddelelsen: "Runtime Error 91,
> Object variable or With block variable not set". Jeg tror problemet er
> relateret til variable objecter, hvor ovenstående eksempel vist nok kræver
> "late binding", men uanset hvor meget jeg leder på microsofts support
> side, har jeg ikke findet et svar der bringer mig videre.
>
> Henrik
>
> --
> Posted via a free Usenet account from http://www.teranews.com
>



Ukendt (25-01-2008)
Kommentar
Fra : Ukendt


Dato : 25-01-08 18:21

Hej Søren

Jeg forsøgte din ide, dog uden at det gav noget brugbart resultat -
desværre...
Når jeg skriver "Set" foran samt "New" foran objected, for jeg
fejlmeddelelsen "syntax error". Fejlen ser ud til at være relateret til
"New", som åbenbart overtræder en regel, og betyder at jeg ikke engang
kan køre koden. Fjerner jeg "New", kan jeg begynde at debugge mig
igennem koden, indtil jeg når linien med "Set", hvorefter jeg får
fejlen: "Runtime Error '424' - Object required".

Jeg har kopieret koden ind nedenfor, for at være sikker på, at vi stadig
snakker om de samme linie. Deruder har jeg som forsøg tilføjet en
CallByName uden for løkken, for at checke at det virker.

Jeg er stadig meget åben for ideer.

Mvh.
Henrik

KODEN:

Private Sub TestFunction()
Dim V As Object
Dim TableCaption(3) As String

Test = CallByName(Sheet1.Table1, "Caption", VbGet)
For i = 1 To 3
Set V = New "Sheet1.Table" & i
TableCaption(i) = CallByName(V, "Caption", VbGet)
Next i
End Sub


soren wrote:
> Det er vistnok først inde i løkken, du skal bruge
> Set V = New "Sheet1.Table" & i
> New, skal vistnok med.
> Dim V As Object før løkken, er vist rigtig nok.
> Du ka da prøve!.
> soren
>
> "remove "at"" <"hz\"at\"post12.tele.dk (remove \"at\")"> skrev i en
> meddelelse news:47930206$0$25989$88260bb3@free.teranews.com...
>> Jeg har forgæves forsøgt at arbejde med dynamiske objecter i VB (under
>> Excel 2003), men det er ikke lykkedes at få det til at fungere, måske
>> nogen har en idé til hvad jeg gør galt...
>>
>> Følgende er et kode eksempel, hvor jeg forsøger tildele en variable værdi
>> til et object således, at kan udlæse forskellige navne på knapper jeg har
>> placeret i et worksheet og gemme dem i et array.
>>
>>
>>
>> Private Sub TestFunction()
>>
>> Dim V As Object
>> Dim TableCaption(3) As String
>>
>> For i = 1 To 3
>> V = "Sheet1.Table" & i
>> TableCaption(i) = CallByName(V, "Caption", VbGet)
>> Next i
>>
>> End Sub
>>
>>
>> Når jeg kører ovenstående kode, får jeg meddelelsen: "Runtime Error 91,
>> Object variable or With block variable not set". Jeg tror problemet er
>> relateret til variable objecter, hvor ovenstående eksempel vist nok kræver
>> "late binding", men uanset hvor meget jeg leder på microsofts support
>> side, har jeg ikke findet et svar der bringer mig videre.
>>
>> Henrik
>>
>> --
>> Posted via a free Usenet account from http://www.teranews.com
>>
>
>

--
Posted via a free Usenet account from http://www.teranews.com


Jens Vestergaard (25-01-2008)
Kommentar
Fra : Jens Vestergaard


Dato : 25-01-08 19:02

Henrik <Henrik> skrev den 25 jan 2008 i
news:479a0ec4$0$14848$88260bb3@free.teranews.com:

> Når jeg skriver "Set" foran samt "New" foran objected, for jeg
> fejlmeddelelsen "syntax error". Fejlen ser ud til at være relateret
> til "New", som åbenbart overtræder en regel, og betyder at jeg ikke
> engang kan køre koden. Fjerner jeg "New", kan jeg begynde at debugge
> mig igennem koden, indtil jeg når linien med "Set", hvorefter jeg får
> fejlen: "Runtime Error '424' - Object required".

Helt generelt (jeg er ikke nogen ørn til VBA) kan du ikke få et objekt
ud af noget, der står i citationstegn.

Dim F As Form
Set F = New Form1
eller
Dim C As Control
Set C = Form1.Text1
er korrekt, hvorimod
Set F = New "Form1"
er dødsdømt.

Citationstegnene indeholder jo pr. definition en string-variable, ikke
et objekt.

--
mvh
Jens Vestergaard
Døgnets jernbanenyheder:
http://www.railsoft.dk/medier.asp

Søg
Reklame
Statistik
Spørgsmål : 177415
Tips : 31962
Nyheder : 719565
Indlæg : 6407849
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste