Ik ben helemaal nieuw in VBA en coderen in het algemeen, ik probeer gegevens uit cellen uit dezelfde werkmap te halen (framepad ophalen …) en vervolgens de toepassing (QTP) te starten en tests uit te voeren.
Ik krijg deze foutmelding wanneer ik probeer waarden op te halen in Excel-cellen:
Run Time Error '424' object required
Ik geloof dat ik enkele basisregels mis, maar ik waardeer je hulp. Zie hieronder het deel van de code in kwestie:
Option Explicit
Private Sub RunTest_Click()
Dim envFrmwrkPath As Range
Dim ApplicationName As Range
Dim TestIterationName As Range
'Dim wb As Workbook
'Dim Batch1 As Worksheets
Dim objEnvVarXML, objfso, app As Object
Dim i, Msgarea
Set envFrmwrkPath = ActiveSheet.Range("D6").Value ' error displayed here
Set ApplicationName = ActiveSheet.Range("D4").Value
Set TestIterationName = ActiveSheet.Range("D8").Value
Antwoord 1, autoriteit 100%
De eerste coderegel, Option Explicit
betekent (in eenvoudige bewoordingen) dat al uw variabelen expliciet moeten worden gedeclareerddoor Dim
-statements . Ze kunnen van elk type zijn, inclusief object, geheel getal, string of zelfs een variant.
Deze regel: Dim envFrmwrkPath As Range
declareert de variabele envFrmwrkPath
van het type Range
. Dit betekent dat u het alleen op een bereik kunt instellen.
Deze regel: Set envFrmwrkPath = ActiveSheet.Range("D6").Value
probeert de variabele Range
in te stellen op een specifieke waarde in cel D6
. Dit kan bijvoorbeeld een geheel getal of een tekenreeks zijn (afhankelijk van wat je in die cel hebt) maar het is geen bereik.
Ik neem aan dat je de waarde wilt opslaan in een variabele. Probeer zoiets als dit:
Dim MyVariableName As Integer
MyVariableName = ActiveSheet.Range("D6").Value
Hierbij wordt ervan uitgegaan dat je een getal (zoals 5) in cel D6 hebt. Nu heeft je variabele de waarde.
Voor het gemak van leren, kun je de regel Option Explicit
verwijderen of becommentariëren en VBA zal proberen het type variabelen tijdens runtime te bepalen.
Probeer dit om door dit deel van je code te komen
Dim envFrmwrkPath As String
Dim ApplicationName As String
Dim TestIterationName As String
Antwoord 2, autoriteit 10%
Verwijder eenvoudig de .value
uit uw code.
Set envFrmwrkPath = ActiveSheet.Range("D6").Value
gebruik in plaats hiervan:
Set envFrmwrkPath = ActiveSheet.Range("D6")
Antwoord 3
Je hebt twee opties,
-Als u de waarde wilt:
Dim MyValue as Variant ' or string/date/long/...
MyValue = ThisWorkbook.Sheets(1).Range("A1").Value
-als u het celobject wilt:
Dim oCell as Range ' or object (but then you'll miss out on intellisense), and both can also contain more than one cell.
Set oCell = ThisWorkbook.Sheets(1).Range("A1")
Antwoord 4
Private Sub CommandButton1_Click()
Workbooks("Textfile_Receiving").Sheets("menu").Range("g1").Value = PROV.Text
Workbooks("Textfile_Receiving").Sheets("menu").Range("g2").Value = MUN.Text
Workbooks("Textfile_Receiving").Sheets("menu").Range("g3").Value = CAT.Text
Workbooks("Textfile_Receiving").Sheets("menu").Range("g4").Value = Label5.Caption
Me.Hide
Run "filename"
End Sub
Private Sub MUN_Change()
Dim r As Integer
r = 2
While Range("m" & CStr(r)).Value <> ""
If Range("m" & CStr(r)).Value = MUN.Text Then
Label5.Caption = Range("n" & CStr(r)).Value
End If
r = r + 1
Wend
End Sub
Private Sub PROV_Change()
If PROV.Text = "LAGUNA" Then
MUN.Text = ""
MUN.RowSource = "Menu!M26:M56"
ElseIf PROV.Text = "CAVITE" Then
MUN.Text = ""
MUN.RowSource = "Menu!M2:M25"
ElseIf PROV.Text = "QUEZON" Then
MUN.Text = ""
MUN.RowSource = "Menu!M57:M97"
End If
End Sub