#Name? error when using user defined function

StructEng1

New Member
Joined
Apr 4, 2023
Messages
36
Office Version
  1. 365
Platform
  1. Windows
Hello,

I am creating a copy of an existing spreadsheet that has a bunch of macros and user defined functions. I am recreating the spreadsheet by starting a new workbook and copy and pasting the sheets into the new workbook and reorganizing the vba codes in the new workbook. As I am doing this, I am running into an #Name? error on one of the cells that uses a user defined function. I don't understand what the problem is because everything (the inputs, the sheet, the vba code) is all the same and it works on the original workbook and not the clone copy. I tried many different things but I can't seem to get it to work and I am not understanding what the problem is. Could you please help me?

Below is the code for the user defined function:
VBA Code:
Option Explicit

Type BoltInfo
   Dv As Double
   Dh As Double
End Type
Function BoltCoefficient(Bolt_Row As Integer, Bolt_Column As Integer, Row_Spacing As Double, Column_Spacing As Double, Eccentricity As Double, Optional Rotation As Double = 0)
    
    Dim i As Integer, k As Integer, n As Integer
    Dim mP As Double, vP As Double, Ro As Double
    Dim Mo As Double, Fy As Double
    Dim xi As Double, yi As Double
    Dim ri As Double, x1 As Double
    Dim y1 As Double, Rot As Double
    Dim Rn As Double, iRn As Double
    Dim Rv As Integer, Rh As Integer
    Dim Sh As Double, Sv As Double
    Dim Ec As Double
    Dim Delta As Double, rmax As Double
    Dim BoltLoc() As BoltInfo
    Dim Stp As Boolean
    Dim j As Double
    Dim FACTOR As Double
    
    Rv = Bolt_Row
    Rh = Bolt_Column
    Sv = Row_Spacing
    Sh = Column_Spacing
    
    ReDim BoltLoc(Rv * Rh - 1)
    
    On Error Resume Next
    
    Rot = Rotation * 3.14159265358979 / 180
    Ec = Eccentricity * Cos(Rot)
    
    If Ec = 0 Then GoTo ForcedExit
    
    n = 0
    For i = 0 To Rv - 1
        For k = 0 To Rh - 1
            y1 = (i * Sv) - (Rv - 1) * Sv / 2
            x1 = (k * Sh) - (Rh - 1) * Sh / 2
            With BoltLoc(n)
                .Dv = x1 * Sin(Rot) + y1 * Cos(Rot) '''Rotate Vertical Coordinate
                .Dh = x1 * Cos(Rot) - y1 * Sin(Rot) '''Rotate Horizontal Coordinate
            End With
            n = n + 1
        Next
    Next
    
    Rn = 74 * (1 - Exp(-10 * 0.34)) ^ 0.55
    Ro = 0: Stp = False
    n = 0
    Do While Stp = False
        rmax = 0
        For i = 0 To Rv * Rh - 1
            xi = BoltLoc(i).Dh + Ro
            yi = BoltLoc(i).Dv
            rmax = Application.WorksheetFunction.Max(rmax, Sqr(xi ^ 2 + yi ^ 2))
        Next
        
        Mo = 0:  Fy = 0
        mP = 0:  vP = 0
        j = 0
        For i = 0 To Rv * Rh - 1
            xi = BoltLoc(i).Dh + Ro
            yi = BoltLoc(i).Dv
            
            ri = Sqr(xi ^ 2 + yi ^ 2): If ri = 0 Then ri = 0.00001
            Delta = 0.34 * ri / rmax
            iRn = 74 * (1 - Exp(-10 * Delta)) ^ 0.55
            Mo = Mo + (iRn / Rn) * ri                           '''Moment
            Fy = Fy + (iRn / Rn) * Abs(xi / ri) * Sgn(xi)       '''Vertical
            j = j + ri ^ 2
        Next
        mP = Mo / (Abs(Ec) + Ro)
        vP = Fy
        Stp = Abs(mP - vP) <= 0.0001
        FACTOR = j / (Rv * Rh * Mo)
        FACTOR = FACTOR / (1 + n / 5000 * 2.5)
        Ro = Ro + (mP - vP) * FACTOR
        DoEvents
        If n = 5000 Then GoTo CantFind
        n = n + 1
    Loop
    
    BoltCoefficient = (mP + vP) / 2
    SendKeys "{esc}"
    Exit Function

CantFind:
    BoltCoefficient = "Cant Find Solution"
    SendKeys "{esc}"
    Exit Function
    
ForcedExit:
    BoltCoefficient = Rv * Rh
    SendKeys "{esc}"
End Function


The formula for the cell that calls the user defined function is as follows:

=IF(G63="DBB",G64*D119-IF(G72="Yes",1,0),boltcoefficient(G64,1,G65,0,(G83+C83/2),DEGREES(ATAN(C64/C63))))

Thank you for your help
 

Excel Facts

Wildcard in VLOOKUP
Use =VLOOKUP("Apple*" to find apple, Apple, or applesauce
Do you still have questions on this? Has this resolved your issue(s)?
 
Upvote 0
I finally understood what you meant by the Name Reference and assigning it a custom name and I have changed it accordingly. To my frustration, now my BoltCoefficient function on cell E119 is not working. It shows #NAME? error. I am just trying to figure this out....I followed your method but it is not working. I must be clearly missing something. If I can get this to work and it interacts with my weld calc macro once it works that would be amazing and would resolve everything.
 
Upvote 0
I finally understood what you meant by the Name Reference and assigning it a custom name and I have changed it accordingly. To my frustration, now my BoltCoefficient function on cell E119 is not working. It shows #NAME? error. I am just trying to figure this out....I followed your method but it is not working. I must be clearly missing something. If I can get this to work and it interacts with my weld calc macro once it works that would be amazing and would resolve everything.
To get it to work correctly I had to break the boltcoefficient function out to a separate cell by itself as it was causing an error in your cell.
See this:
Change the text color to match the background if you want to hide E119 . . .
This seems to keep the error from happening:

Copy of Sample SS.xlsm
BCDE
1171. Shear Resistance
118Vr/Bolt (kN/Bolt)C of Bolt Group# Angles
11979.003.0623.056111208
120Vr =N/AkNN/A
Angle Shear Connections
Cell Formulas
RangeFormula
B119B119=G68
D119D119=IF(OR(G63="SBB",G63="SWB"),1,2)
C119C119=IF(G63="DBB",G64*D119-IF(G72="Yes",1,0),E119)
C120C120=IF(OR(C34="SWB",C34="DWB"),"N/A",B119*C119)
E119E119=boltcoefficient(G64,1,G65,0,(G83+C83/2),DEGREES(ATAN(C64/C63)))
E120E120=IF(C120="N/A",C120,C63/C120)
Named Ranges
NameRefers ToCells
ConnectionType='Angle Shear Connections'!$C$34C120
Cells with Conditional Formatting
CellConditionCell FormatStop If True
E120Cell Value="N/A"textNO
E120Cell Value<0.95textNO
E120Cell Value>=0.95textNO
 
Upvote 0
To get it to work correctly I had to break the boltcoefficient function out to a separate cell by itself as it was causing an error in your cell.
See this:
Yeah I followed everything you did but cell E119 where is calls the boltcoefficient function shows as #NAME? :unsure:
 
Upvote 0
Yeah I followed everything you did but cell E119 where is calls the boltcoefficient function shows as #NAME? :unsure:
I moved to E120 and used that cell in place of the function . . . Look again at my info . . . Hmm look at the spreadsheet I provided . . .

MrExcel-1236244.xlsm
BCDE
1171. Shear Resistance
118Vr/Bolt (kN/Bolt)C of Bolt Group# Angles
11979.003.0623.056111208
120Vr =N/AkNN/A
Angle Shear Connections
Cell Formulas
RangeFormula
B119B119=G68
D119D119=IF(OR(G63="SBB",G63="SWB"),1,2)
C119C119=IF(G63="DBB",G64*D119-IF(G72="Yes",1,0),E119)
C120C120=IF(OR(C34="SWB",C34="DWB"),"N/A",B119*C119)
E119E119=boltcoefficient(G64,1,G65,0,(G83+C83/2),DEGREES(ATAN(C64/C63)))
E120E120=IF(C120="N/A",C120,C63/C120)
Named Ranges
NameRefers ToCells
ConnectionType='Angle Shear Connections'!$C$34C120
Cells with Conditional Formatting
CellConditionCell FormatStop If True
E120Cell Value="N/A"textNO
E120Cell Value<0.95textNO
E120Cell Value>=0.95textNO
 
Upvote 0
I moved to E120 and used that cell in place of the function . . . Look again at my info . . . Hmm look at the spreadsheet I provided . . .

MrExcel-1236244.xlsm
BCDE
1171. Shear Resistance
118Vr/Bolt (kN/Bolt)C of Bolt Group# Angles
11979.003.0623.056111208
120Vr =N/AkNN/A
Angle Shear Connections
Cell Formulas
RangeFormula
B119B119=G68
D119D119=IF(OR(G63="SBB",G63="SWB"),1,2)
C119C119=IF(G63="DBB",G64*D119-IF(G72="Yes",1,0),E119)
C120C120=IF(OR(C34="SWB",C34="DWB"),"N/A",B119*C119)
E119E119=boltcoefficient(G64,1,G65,0,(G83+C83/2),DEGREES(ATAN(C64/C63)))
E120E120=IF(C120="N/A",C120,C63/C120)
Named Ranges
NameRefers ToCells
ConnectionType='Angle Shear Connections'!$C$34C120
Cells with Conditional Formatting
CellConditionCell FormatStop If True
E120Cell Value="N/A"textNO
E120Cell Value<0.95textNO
E120Cell Value>=0.95textNO
Sorry I am not sure I understand. I am following your spreadsheet as well as your posts and I don't see a difference. Cell C119 used to call the function but it was moved to E119 as shown here.
Sorry 😅 Are you referring to this one here?
1684256426583.png
 
Upvote 0
I found that my problem was that my module was named the same as my user defined function. After I fixed that issue, I now get a #VALUE! error
 
Upvote 0
I moved to E120 and used that cell in place of the function . . . Look again at my info . . . Hmm look at the spreadsheet I provided . . .

MrExcel-1236244.xlsm
BCDE
1171. Shear Resistance
118Vr/Bolt (kN/Bolt)C of Bolt Group# Angles
11979.003.0623.056111208
120Vr =N/AkNN/A
Angle Shear Connections
Cell Formulas
RangeFormula
B119B119=G68
D119D119=IF(OR(G63="SBB",G63="SWB"),1,2)
C119C119=IF(G63="DBB",G64*D119-IF(G72="Yes",1,0),E119)
C120C120=IF(OR(C34="SWB",C34="DWB"),"N/A",B119*C119)
E119E119=boltcoefficient(G64,1,G65,0,(G83+C83/2),DEGREES(ATAN(C64/C63)))
E120E120=IF(C120="N/A",C120,C63/C120)
Named Ranges
NameRefers ToCells
ConnectionType='Angle Shear Connections'!$C$34C120
Cells with Conditional Formatting
CellConditionCell FormatStop If True
E120Cell Value="N/A"textNO
E120Cell Value<0.95textNO
E120Cell Value>=0.95textNO
I got it to work!!!!! Thank you so much for your help and your patience!
 
Upvote 0

Forum statistics

Threads
1,224,817
Messages
6,181,144
Members
453,021
Latest member
Justyna P

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top