VBA Snippets
Message_DoesNotExist
Public Sub Message_NamedRangeDoesNotExist( _
ByVal snamedrange As String)
Dim sMessage As String
sMessage = "This workbook named range does not exist: " & _
vbCrLf & vbCrLf & _
"'" & snamedrange & "'"
Call MsgBox(sMessage, vbOKOnly + vbInformation, modConstants.g_sCOMPANYNAME & " (" & g_sVERSION & ") - " & "Named Range")
Call Tracer_Add("MESSAGE", sMessage)
End Sub
Wbk_NamedRangeConstantExists
Public Function Wbk_NamedRangeConstantExists( _
ByVal snamedrange As String) As Boolean
Dim vValue As Variant
On Error GoTo ErrorHandler
vValue = ActiveWorkbook.Names.Item(snamedrange).Value
NamedRangeConstant_Exists = True
Exit Function
ErrorHandler:
NamedRangeConstant_Exists = False
End Function
Wbk_NamedRangeDelete
Public Sub Wbk_NamedRangeDelete( _
ByVal objWorkbook As Excel.Workbook, _
ByVal sPrefix As String)
Const sPROCNAME As String = "Wbk_NamedRangeDelete"
Dim inamescounter As Integer
On Error GoTo ErrorHandler
For inamescounter = objWorkbook.Names.Count To 1 Step -1
If Left(objWorkbook.Names.Item(inamescounter).Name, Len(sPrefix)) = sPrefix Then
objWorkbook.Names.Item(inamescounter).Delete
End If
Next inamescounter
Exit Sub
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Sub
Wbk_NamedRangeExists
Public Function Wbk_NamedRangeExists( _
ByVal snamedrange As String) As Boolean
Dim objrange As Excel.Range
On Error GoTo ErrorHandler
Set objrange = Range(snamedrange)
NamedRange_Exists = True
Exit Function
ErrorHandler:
NamedRange_Exists = False
End Function
Wbk_NamedRangeGet
Public Function Wbk_NamedRangeGet( _
ByVal sWshName As String, _
ByVal sNamedRange As String, _
Optional ByVal bRemoveEquals As Boolean = True) As String
Const sPROCNAME As String = "Wbk_NamedRangeGet"
Dim owsh As Excel.Worksheet
Dim inamescounter As Integer
On Error GoTo ErrorHandler
owsh = Application.Worksheets(sWshName)
For inamescounter = 1 To owsh.Names.Count
If owsh.Names.Item(inamescounter).Name = sNamedRange Then
NamedRangeGet = owsh.Names.Item(inamescounter).Value
Exit For
End If
Next
If bRemoveEquals = True Then
NamedRangeGet = NamedRangeGet.Substring(1, NamedRangeGet.Length - 1)
End If
If gbDEBUG = False Then Exit Function
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description, _
"return the contents of the named range '" & sNamedRange & "'.")
End Function
Wbk_NamedRangeRedefine
Public Sub Wbk_NamedRangeRedefine( _
ByVal sNamedRangeName As String, _
ByVal sWshName As String, _
ByVal sColFirst As String, _
ByVal lRowFirst As Long, _
ByVal sColLast As String, _
ByVal lRowLargest As Long)
Const sPROCNAME As String = "Wbk_NamedRangeRedefine"
Dim llastrow As Long
Dim oStartCell As Range
Dim oFinishCell As Range
Dim oRange As Range
On Error GoTo ErrorHandler
llastrow = Sheets(sWshName).Range(Sheets(sWshName).Range(sColFirst & lRowLargest).End(XlDirection.xlUp).Address).Row
Set oStartCell = Sheets(sWshName).Range(sColFirst & lRowFirst)
Set oFinishCell = Sheets(sWshName).Range(sColLast & llastrow)
Set oRange = Sheets(sWshName).Range(oStartCell.Address & ":" & oFinishCell.Address)
Application.Names.Add Name:=sNamedRangeName, RefersTo:=Sheets(sWshName).Range(oRange.Address)
Exit Sub
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Sub
Wbk_NamedRangesConstantsToArray
Public Function Wbk_NamedRangesConstantsToArray( _
ByVal sSubStrStart As String, _
ByVal sSubStrMiddle As String, _
ByVal sSubStrEnd As String) As Variant
Const sPROCNAME As String = "Wbk_NamedRangesConstantsToArray"
Dim snamedrange As String
Dim vArrayName As Variant
Dim lnamescounter As Long
Dim lnamesfound As Long
On Error GoTo ErrorHandler
ReDim vArrayName(1 To 2, 1 To ActiveWorkbook.Names.Count)
lnamesfound = 0
If (Len(sSubStrStart) > 0) Then
For lnamescounter = 1 To ActiveWorkbook.Names.Count
snamedrange = ActiveWorkbook.Names(lnamescounter).Name
If (Len(snamedrange) > Len(sSubStrStart)) Then
If (UCase(VBA.Left(snamedrange, Len(sSubStrStart))) = UCase(sSubStrStart)) Then
lnamesfound = lnamesfound + 1
vArrayName(1, lnamesfound) = Right(snamedrange, Len(snamedrange) - Len(sSubStrStart))
vArrayName(2, lnamesfound) = Mid(ActiveWorkbook.Names(lnamescounter).Value, 3, 2)
End If
End If
Next lnamescounter
End If
ReDim Preserve vArrayName(1 To 2, 1 To lnamesfound)
Wbk_NamedRangesConstantsToArray = vArrayName
Exit Function
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Function
© 2025 Better Solutions Limited. All Rights Reserved. © 2025 Better Solutions Limited Top