Macros for this post ( Question 1 )
https://excelfox.com/forum/showthrea...ll=1#post13443
Code:Option Explicit ' https://excel.tips.net/T002145_Dynamic_Worksheet_Tab_Names.html ' https://excelfox.com/forum/showthread.php/2345-Appendix-Thread-(-Codes-for-other-Threads-HTML-Tables-etc-)?p=13443&viewfull=1#post13443 https://excelfox.com/forum/showthread.php/2345-Appendix-Thread-(-Codes-for-other-Threads-HTML-Tables-etc-)?p=13443&viewfull=1#post13444 Sub RemoveAllButThisWorksheet() Dim Cnt For Cnt = ThisWorkbook.Worksheets.Count To 2 Step -1 ' second worksheet counting tab from the left is worksheets item 2 Let Application.DisplayAlerts = False ThisWorkbook.Worksheets.Item(Cnt).Delete Let Application.DisplayAlerts = True Next Cnt End Sub Sub ChangeNamesToExistingWorksheets() ' Rem 0 On Error GoTo Bed ' If we have problems then we want to make sure that we still re enable Events coding before ending the macro Let Application.EnableEvents = False ' This will prevent anything we do in this macro from causing erratic working of any automatic event coding Rem 1 worksheets 1 info Dim Ws1 As Worksheet Set Ws1 = ThisWorkbook.Worksheets.Item(1) ' or Worksheets("Name List") ' first worksheet counting tab from the left is worksheets item 1 Dim Lr1 As Long Let Lr1 = Ws1.Range("B" & Ws1.Rows.Count & "").End(xlUp).Row ' http://www.excelfox.com/forum/showthread.php/2345-Appendix-Thread-(-Codes-for-other-Threads-HTML-Tables-etc-)?p=11466&viewfull=1#post11466 Making Lr dynamic ( using rng.End(XlUp) for a single column. ) Dim arrNmes() As Variant ' The .Value2 property in the next line will return a field of values housed in Variant type Elements, so we need to give the variant type to our array used to capture that array of values Let arrNmes() = Ws1.Range("B1:B" & Lr1 & "").Value2 Rem 2 Add and name worksheets from list Dim Cnt As Long For Cnt = 2 To UBound(arrNmes(), 1) ' From (2,1) To (2,Lr1) in names array list column 2 ( column B ) Let Worksheets.Item(Cnt).Name = arrNmes(Cnt, 1) Next Cnt Bed: ' error handling code section. Let Application.EnableEvents = True End Sub Sub AddWorksheetsfromListOfNames() Rem 0 On Error GoTo Bed Let Application.EnableEvents = False Rem 1 worksheets 1 info Dim Ws1 As Worksheet Set Ws1 = ThisWorkbook.Worksheets.Item(1) ' or Worksheets("Name List") ' first worksheet counting tab from the left is worksheets item 1 Dim Lr1 As Long Let Lr1 = Ws1.Range("B" & Ws1.Rows.Count & "").End(xlUp).Row ' http://www.excelfox.com/forum/showthread.php/2345-Appendix-Thread-(-Codes-for-other-Threads-HTML-Tables-etc-)?p=11466&viewfull=1#post11466 Making Lr dynamic ( using rng.End(XlUp) for a single column. ) Dim arrNmes() As Variant Let arrNmes() = Ws1.Range("B1:B" & Lr1 & "").Value2 Rem 2 Add and name worksheets from list Dim Cnt As Long For Cnt = 2 To UBound(arrNmes(), 1) ' From (2,1) To (2,Lr1) in names array list column 2 Worksheets.Add After:=Worksheets.Item(Worksheets.Count) Let ActiveSheet.Name = arrNmes(Cnt, 1) Next Cnt Bed: Let Application.EnableEvents = True End Sub ' ' Private Sub Worksheet_Change(ByVal Target As Range) If IsArray(Target.Value) Then Exit Sub ' If we have changed more than 1 cell, our code lines below will error, so best do nothing in such a case Dim Ws1 As Worksheet Set Ws1 = Me Dim Lr1 As Long Let Lr1 = Ws1.Range("B" & Ws1.Rows.Count & "").End(xlUp).Row ' http://www.excelfox.com/forum/showthread.php/2345-Appendix-Thread-(-Codes-for-other-Threads-HTML-Tables-etc-)?p=11466&viewfull=1#post11466 Making Lr dynamic ( using rng.End(XlUp) for a single column. ) Dim Rng As Range Set Rng = Ws1.Range("B2:B" & Lr1 & "") If Not Intersect(Rng, Target) Is Nothing Then ' The Excel VBA Application.Intersect method returns the range where all the given ranges cross, or Nothing if there are no common cells. So, in this example, we would have Nothing if our selection ( which VBA supplies in Target ) , did not cross our names list ' https://docs.microsoft.com/en-us/office/vba/api/excel.application.intersect Dim Rw As Long Let Rw = Target.Row Let ThisWorkbook.Worksheets.Item(Rw).Name = Target.Value ' In the list, each row number corresponds to the item number of our worksheets made from that list Else ' changed cell was not in Student name list End If End Sub
Cross posts
https://excel.tips.net/T002145_Dynamic_Worksheet_Tab_Names.html ( 2020-05-28 22:13:09 Rajesh Kumar ) https://excel.tips.net/T002145_Dynam...Tab_Names.html
https://www.mrexcel.com/board/threads/vba-for-dynamic-sheets-name-dynamic-link-hide-sheets-based-on-a-cell-value.1135674/ https://www.mrexcel.com/board/thread...value.1135674/




Reply With Quote
Bookmarks