Link to home
Start Free TrialLog in
Avatar of travisjbennett
travisjbennettFlag for United States of America

asked on

Runtime Error 2447: Invalid use of the . (dot) or ! operator or invalid parentheses.

FBPos is a text box.

I want to see if the two properties are the same. I understand I may need to invoke the Eval() function around the .Tag one, but first I need the compiler to stop vommiting.

So why does this line cause a run-time error?
If FBPos.Value = FBPos.Tag Then
...

Open in new window

Avatar of Rey Obrero (Capricorn1)
Rey Obrero (Capricorn1)
Flag of United States of America image

where and when is the code run?
from VBA window
Debug > Compile
correct any errors raised.
Avatar of travisjbennett

ASKER

It's run as shown below, in the beginning of a subroutine for lostfocus.
I tried changing what was in the IF to something else, still same error.

Private Sub FBPos_LostFocus()
    If FBPos.Value = "" Or IsNull(FBPos.Value) Then

Open in new window

The error occurs on the IF line...
is FBPos a bound control?
try doing a compact and repair first.
No, it says Unbound in design view.
Nope... Compact & Repair didn't do it.
I'll post more code...
So again, the error occurs on the first line of "Private Sub FBPos_LostFocus()" which is coded like "If FBPos.Value = "" Or IsNull(FBPos.Value) Then..."
The code only spews in LogicMidFBPos_Change() 's call of FBPos_LostFocus().
 
Up'd to 500 pts.

Private Sub LogicMidFBPos_Change()
    FBPos.Tag = FBPos.DefaultValue
    If LogicMidFBPos.Value = "All" Then
        FBPos.DefaultValue = "Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word""""" & Chr(13) & Chr(10) & "Tip: Use few short and generic terms to maximize results."
    End If
    If LogicMidFBPos.Value = "Any" Then
        FBPos.DefaultValue = "Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word""""" & Chr(13) & Chr(10) & "Tip: Use many short and generic terms to maximize results."
    End If
    Call FBPos_LostFocus
    FBPos.Tag = ""
End Sub
 
 
Private Sub FBPos_GotFocus()
    If FBPos.Value = Eval(FBPos.DefaultValue) Then
        FBPos.Value = ""
        FBPos.ForeColor = RGB(0, 0, 0)
    End If
End Sub
 
 
Private Sub FBPos_LostFocus()
    If FBPos.Value = "" Or IsNull(FBPos.Value) Then
        FBPos.Value = Eval(FBPos.DefaultValue)
        FBPos.ForeColor = RGB(128, 128, 128)
    End If
End Sub

Open in new window

can i see your db?
check Attach File to initiate upload
I can cut out the form and show it to you that way... It'll take a few minutes though.
Ok, so get rid of the MDB file extension so that it becomes simply
Sample.accdb

Sample.accdb.mdb
i'll take a look at it later, when i am on a box with A2007
Alright, thanks.
if you can make an .mdb, i can take a look at it now
Alright, so the error occurs as I use the second dropdown above any text entry field.
The line that the debug button points to has a comment after then then... that's the code I was trying to add and still want to...
Anyway, good luck!

Sample03.mdb
change as shown, original code with ' on the front

Private Sub LogicMidFBPos_Change()

    FBPos.Tag = FBPos.DefaultValue
    If LogicMidFBPos.Value = "All" Then
'        FBPos.DefaultValue = "Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word""""" & Chr(13) & Chr(10) & "Tip: Use few short and generic terms to maximize results."
        FBPos = "Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word""""" & Chr(13) & Chr(10) & "Tip: Use few short and generic terms to maximize results."
    End If
    If LogicMidFBPos.Value = "Any" Then
'        FBPos.DefaultValue = "Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word""""" & Chr(13) & Chr(10) & "Tip: Use many short and generic terms to maximize results."
        FBPos = "Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word""""" & Chr(13) & Chr(10) & "Tip: Use many short and generic terms to maximize results."
    End If
    Call FBPos_LostFocus
    FBPos.Tag = ""

End Sub


see the use of DefaultValue in Access Help
But what I'm trying to do is insert/remove the word "many" or "few" in the tip line, based on the contents of the any/all dropdown.
In order for the grey/blank/reset thing to work, I need to update the defaultvalue too. How can I do that?
Do I just need to set both at the same time?
I think I've got it down to the question of:
How do I get the line of code below to run in the immediate window?

? Eval(""Format: ""Phrase 1"", ""Phrase 2"", ""Phrase 3"", ""Word"""" & Chr(13) & Chr(10) & ""Tip: Use few short and generic terms to maximize results."")

Open in new window

I just need to get the quotes, etc. right.
This works...
? Eval("""String Cheese "" & 1")

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Rey Obrero (Capricorn1)
Rey Obrero (Capricorn1)
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Yep... I just got it to work with this...
Phew...
Beautiful! Thanks again Cap.

    Call FBPos_GotFocus
    If LogicMidFBPos.Value = "all" Then
        If LogicPreFBPos.Value = "do" Then
            FBPos.DefaultValue = """Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word"""""" & Chr(13) & Chr(10) & ""Tip: Use few short and generic terms to maximize results."""
            FBPos.Value = ""
        End If
        If LogicPreFBPos.Value = "do not" Then
            FBPos.DefaultValue = """Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word"""""" & Chr(13) & Chr(10) & ""Tip: Use few short and generic terms to maximize results."""
            FBPos.Value = ""
        End If
    End If
    If LogicMidFBPos.Value = "any" Then
        If LogicPreFBPos.Value = "do" Then
            FBPos.DefaultValue = """Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word"""""" & Chr(13) & Chr(10) & ""Tip: Use many short and generic terms to maximize results."""
            FBPos.Value = ""
        End If
        If LogicPreFBPos.Value = "do not" Then
            FBPos.DefaultValue = """Format: """"Phrase 1"""", """"Phrase 2"""", """"Phrase 3"""", """"Word"""""" & Chr(13) & Chr(10) & ""Tip: Use few short and generic terms to maximize results."""
            FBPos.Value = ""
        End If
    End If
    Call FBPos_LostFocus

Open in new window