VBA Snippets
Wsh_ActiveName
Public Function Wsh_ActiveName() As String
Dim oWsh As Excel.Worksheet
On Error GoTo ErrorHandler
'Call Tracer_AddSubroutineStart(msMODULENAME, sPROCNAME)
'Set oWsh = ActiveWindow.SelectedSheets(1)
Set oWsh = ActiveSheet
Wsh_ActiveName = oWsh.Name
Exit Function
ErrorHandler:
'Call modMessages.Message_NoWorkbooksOpen(bInformUser)
Wsh_ActiveName = ""
End Function
Wsh_CopyAfter
Public Sub Wsh_CopyAfter( _
ByVal sWshNameToCopy As String, _
ByVal sAfterWshName As String, _
ByVal sNewWshName As String, _
Optional ByVal sCopyFromWkbName As String = "", _
Optional ByVal sCopyToWbkName As String = "")
Const PROCNAME As String = "Wsh_CopyAfter"
On Error GoTo ErrorHandler
Application.DisplayAlerts = False
If sCopyFromWkbName <> "" Then Workbooks(sCopyFromWkbName).Activate
Worksheets(sWshNameToCopy).Select 'selects the sheet to be copied
If sCopyToWbkName = "" Then
Worksheets(sWshNameToCopy).Copy after:=Sheets(sAfterWshName)
Worksheets(sWshNameToCopy & " (2)").Name = sNewWshName 'renames the sheet
Else
Worksheets(sWshNameToCopy).Copy after:=Workbooks(sCopyToWbkName).Sheets(sAfterWshName)
Worksheets(sWshNameToCopy).Name = sNewWshName 'renames the sheet
End If
If sCopyFromWkbName <> "" Then Workbooks(sCopyFromWkbName).Activate
Application.DisplayAlerts = True
Exit Sub
ErrorHandler:
' Call Error_Handle(msMODULENAME, PROCNAME, 2, "WS1", "AD1", _
sWshNameToCopy & " and put it after worksheet " & sAfterWshName)
End Sub
Wsh_CopyBefore
Public Sub Wsh_CopyBefore( _
ByVal sWshNameToCopy As String, _
ByVal sBeforeWshName As String, _
ByVal sNewWshName As String, _
Optional ByVal sCopyFromWkbName As String = "", _
Optional ByVal sCopyToWbkName As String = "")
Const sPROCNAME As String = "Wsh_CopyBefore"
On Error GoTo ErrorHandler
Call Tracer_AddSubroutineStart(msMODULENAME, sPROCNAME)
Application.DisplayAlerts = False
If sCopyFromWkbName <> "" Then Workbooks(sCopyFromWkbName).Activate
Worksheets(sWshNameToCopy).Select
If sCopyToWbkName = "" Then
Worksheets(sWshNameToCopy).Copy Before:=Sheets(sBeforeWshName)
Worksheets(sWshNameToCopy & " (2)").Name = sNewWshName
Else
Worksheets(sWshNameToCopy).Copy Before:=Workbooks(sCopyToWbkName).Sheets(sBeforeWshName)
Worksheets(sWshNameToCopy).Name = sNewWshName
End If
Worksheets(sNewWshName).Range("A1").Select
Worksheets(sNewWshName).Tab.ColorIndex = xlColorIndexNone
If sCopyFromWkbName <> "" Then Workbooks(sCopyFromWkbName).Activate
Application.DisplayAlerts = True
Exit Sub
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Sub
Wsh_Delete
Public Sub Wsh_Delete( _
ByVal sWshName As String, _
Optional ByVal bDisplayAlerts As Boolean = True)
Const sPROCNAME As String = "Wsh_Delete"
Dim objWorkbook As Excel.Workbook
Dim wshname As Worksheet
On Error GoTo ErrorHandler
Call Tracer_AddSubroutineStart(msMODULENAME, sPROCNAME)
Application.DisplayAlerts = bDisplayAlerts
Set objWorkbook = Application.ActiveWorkbook
For Each wshname In ActiveWorkbook.Worksheets
If (wshname.Name = sWshName) Then wshname.Delete
Next wshname
Application.DisplayAlerts = True
Exit Sub
ErrorHandler:
Application.DisplayAlerts = True
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Sub
Wsh_DeleteAllExcept
Public Sub Wsh_DeleteAllExcept( _
ByVal sWshNamesToKeep As String, _
Optional ByVal sSeperateChar As String = ";", _
Optional ByVal bDisplayAlerts As Boolean = True, _
Optional ByVal sWbkName As String = "")
Const sPROCNAME As String = "Wsh_DeleteAllExcept"
Dim wshname As Worksheet
Dim bdeletewsh As Boolean
Dim stemporary As String
Dim swshnametokeep As String
Dim sreturnwbkname As String
Dim sreturnwshname As String
On Error GoTo ErrorHandler
If sSeperateChar = "" Then sSeperateChar = Chr(10)
If sWbkName <> "" Then sreturnwbkname = ActiveWorkbook.Name
If sWbkName <> "" Then Workbooks(sWbkName).Activate
Application.DisplayAlerts = False
For Each wshname In ActiveWorkbook.Worksheets
If Wsh_ListIsItIn(wshname.Name, sWshNamesToKeep) = False Then wshname.Delete
Next wshname
Application.DisplayAlerts = bDisplayAlerts
If sWbkName <> "" Then
Workbooks(sreturnwbkname).Activate
End If
Exit Sub
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Sub
Wsh_DeleteAllNotShaded
Public Sub Wsh_DeleteAllNotShaded( _
Optional ByVal bDisplayAlerts As Boolean = True)
Const sPROCNAME As String = "Wsh_DeleteAllNotShaded"
Dim objWorkbook As Excel.Workbook
Dim wshname As Worksheet
On Error GoTo ErrorHandler
Call Tracer_AddSubroutineStart(msMODULENAME, sPROCNAME)
Application.DisplayAlerts = bDisplayAlerts
Set objWorkbook = Application.ActiveWorkbook
For Each wshname In ActiveWorkbook.Worksheets
If (wshname.Tab.ColorIndex = xlColorIndexNone) Then wshname.Delete
Next wshname
Application.DisplayAlerts = True
Exit Sub
ErrorHandler:
Application.DisplayAlerts = True
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Sub
Wsh_Exists
Public Function Wsh_Exists( _
ByVal oWbk As Excel.Workbook, _
ByVal sWshName As String) As Boolean
Dim sName As String
On Error GoTo ErrorHandler
sName = oWbk.Sheets(sWshName).Name
If Len(sName) > 0 Then Wsh_Exists = True
Exit Function
ErrorHandler:
Wsh_Exists = False
End Function
Public Function Wsh_Exists( _
ByVal oWbk As Excel.Workbook, _
ByVal sWshName As String) As Boolean
Dim bexists As Boolean
Dim lwshcount As Long
Dim owsh As Excel.Worksheet
On Error GoTo ErrorHandler
bexists = False
For lwshcount = 1 To oWbk.Worksheets.Count
Set owsh = oWbk.Worksheets(lwshcount)
If (owsh.Name = sWshName) Then
bexists = True
Exit For
End If
Next lwshcount
Wsh_Exists = bexists
Exit Function
ErrorHandler:
Wsh_Exists = False
End Function
Wsh_Filtering_AutoFilterShowAll
Public Function Wsh_Filtering_AutoFilterShowAll( _
ByVal sWshName As String) As Boolean
On Error GoTo ErrorHandler
Wsh_Filtering_AutoFilterShowAll = True
' Sheets(sWshName).ShowAllData
Exit Function
ErrorHandler:
Wsh_Filtering_AutoFilterShowAll = False
End Function
Wsh_NameIsInList
Public Function Wsh_NameIsInList( _
ByVal sWshName As String, _
ByVal sWshConcatenation As String, _
Optional ByVal sSeperateChar As String = ";", _
Optional ByVal sWbkName As String = "") As Boolean
Const sPROCNAME As String = "Wsh_NameIsInList"
Dim swshnametokeep As String
Dim stemporary As String
On Error GoTo ErrorHandler
Call Tracer_AddSubroutineStart(msMODULENAME, sPROCNAME)
Wsh_NameIsInList = False
stemporary = sWshConcatenation
Do While Len(stemporary) > 0
If InStr(stemporary, sSeperateChar) > -1 Then
swshnametokeep = Left(stemporary, InStr(stemporary, sSeperateChar))
Else
swshnametokeep = stemporary
stemporary = ""
End If
If sWshName = swshnametokeep Then
Wsh_NameIsInList = True
Exit Function
End If
stemporary = Right(stemporary, InStr(stemporary, sSeperateChar) + 1)
Loop
Exit Function
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Function
Wsh_NameToNamedRange
Public Function Wsh_NameToNamedRange( _
ByVal sWshName As String) As String
Const sPROCNAME As String = "Wsh_NameToNamedRange"
Dim sreturn As String
On Error GoTo ErrorHandler
Call Tracer_AddSubroutineStart(msMODULENAME, sPROCNAME)
sreturn = UCase(sWshName)
sreturn = Replace(sreturn, " ", "")
sreturn = Replace(sreturn, "-", "")
sreturn = Replace(sreturn, "(", "")
sreturn = Replace(sreturn, ")", "")
Wsh_NameToNamedRange = sreturn
Exit Function
ErrorHandler:
Call Error_Handle(msMODULENAME, sPROCNAME, Err.Number, Err.Description)
End Function
Wsh_PasteValues
Public Sub Wsh_PasteValues(ByVal sReturnCell As String, _
Optional ByVal sWshName As String = "", _
Optional ByVal sWbkName As String = "")
Dim sreturnwbkname As String
Dim sreturnwshname As String
If sWbkName <> "" Then sreturnwbkname = ActiveWorkbook.Name
If sWshName <> "" Then sreturnwshname = ActiveSheet.Name
If sWbkName <> "" Then Workbooks(sWbkName).Activate
If sWshName <> "" Then Worksheets(sWshName).Select
Cells.Copy
Cells.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Range(sReturnCell).Select
If sWbkName <> "" Then Workbooks(sreturnwbkname).Activate
If sWshName <> "" Then Worksheets(sreturnwshname).Select
End Sub
Wsh_Protect
Public Sub Wsh_Protect(ByVal sWshName As String)
Worksheets(sWshName).Protect _
Contents:=True, _
AllowFormattingCells:=True
End Sub
Wsh_SelectOne
Public Sub Wsh_SelectOne(ByVal sWshName As String)
Const sProcName As String = "Wsh_SelectOne"
Dim isheetcount As Integer
On Error GoTo ErrorHandler
For isheetcount = 1 To ActiveWorkbook.Worksheets.Count
If (ActiveWorkbook.Worksheets(isheetcount).Name = sWshName) Then
ActiveWorkbook.Worksheets(isheetcount).Activate
Exit Sub
End If
Next isheetcount
Exit Sub
ErrorHandler:
Call Error_Handle(msMODULENAME, sProcName, Err.Number, Err.Description)
End Sub
Wsh_UnProtect
Public Sub Wsh_UnProtect(ByVal sWshName As String)
Worksheets(sWshName).Unprotect
End Sub
© 2025 Better Solutions Limited. All Rights Reserved. © 2025 Better Solutions Limited Top