首先想说的是,在1-10的评分中,我对VBA的了解大约为-2。我正在学习,并依靠现有的大量编码。
我的问题,我有一个包含两个TABS的工作簿:
Tab 1 = MENU(包含TABS列表及其链接) 标签2 =模板表格(隐藏)
在菜单中,我创建了一个调用模块的按钮,允许用户创建新的TAB。单击时,隐藏的模板表单可见,因此可以将其复制到新选项卡,然后再次隐藏。
然后,用户提示输入业务程序名称,该值将转移到新创建的工作表中的特定单元格。
然后提示用户输入缩写词,该值将被转移到两个地方:
1)到工作表中的特定单元格 2)成为TAB的名称
这是我使用的代码:
Sub New_Prog()
Dim tmp_sheet As Worksheet
Sheets("TEMPLATE").Visible = True
Sheets("TEMPLATE").Copy After:=Sheets(Sheets.Count)
Set test = ActiveSheet
Dim prog_full_name As String
prog_full_name = InputBox("What is the program's full name", "Program full name")
ActiveSheet.Range("C6").Value = UCase(prog_full_name)
Dim prog_acro As String
prog_acro = InputBox("What is the program's acronyme", "Program acronyme")
ActiveSheet.Range("G6").Value = UCase(prog_acro)
ActiveSheet.Name = UCase(prog_acro)
Dim prog_dpt As String
prog_dpt = InputBox("What is the program's department (ESDC, TB, etc.)", "Program department")
ActiveSheet.Range("K6").Value = UCase(prog_dpt)
Sheets("TEMPLATE").Visible = False**
问题1 我应该为我的模块提供什么代码来验证带有首字母缩写词的TAB是否已经存在,并返回一条错误消息,告知用户。
问题2 我希望在MENU TAB中的单元格中自动创建链接,该链接链接到创建的新TAB。如何将TAB名称传递到特定单元格,进入下一个空单元格并使超链接到实际TAB?
问题3 此外,在MENU选项卡中,我有一个名为BUSINESS的列和一个名为CLIENT的列;我希望用户选择是否应在业务列,客户端列或两者下创建链接。
感谢。
答案 0 :(得分:0)
尝试使用“裸骨”解决方案来解决您需要的原则。示例假定用户输入的输入框很简单,菜单表中的选项卡名称位于col menCol中,超链接列为menCol + 1表示Business,menCol + 2表示客户端。
Sub SOQ()
Dim wsMen As Worksheet, wsNew As Worksheet
Dim nextMenRow As Long, menCol As Long
Set wsMen = Sheets("Menu")
menCol = 1
usrWs = InputBox("Enter Tab Name")
For Each ws In Worksheets
If UCase(usrWs) = UCase(ws.Name) Then
MsgBox "This Tab name already exists"
Exit Sub
End If
Next ws
lnk = InputBox("Create link under All (A), Business (B) or Client (C)")
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = usrWs
With wsMen
nextMenRow = .Cells(.Rows.Count, menCol).End(xlUp).Row + 1
.Cells(nextMenRow, menCol).Value = usrWs
Select Case UCase(lnk)
Case Is = "A"
Call createHyp(usrWs, nextMenRow, menCol + 1)
Call createHyp(usrWs, nextMenRow, menCol + 2)
Case Is = "B"
Call createHyp(usrWs, nextMenRow, menCol + 1)
Case Is = "C"
Call createHyp(usrWs, nextMenRow, menCol + 2)
End Select
End With
End Sub
Sub createHyp(ByVal sht As String, ByVal rw As Long, ByVal co As Long)
With Sheets("Menu")
.Hyperlinks.Add Anchor:=.Cells(rw, co), Address:="", SubAddress:=sht & "!" & Cells(1, 1).Address, TextToDisplay:="Goto " & sht
End With
End Sub