Q:我想去除工作表中公式的等号,从而直观地获取公式? A:可以使用下面的VBA代码来完成: Sub GetFormula() Dim wksData As Worksheet '代表公式所在的工作表 Dim wksFormula As Worksheet '放置公式文本的工作表 Dim rngFormula As Range '公式所在的区域 Dim rng As Range Dim i As Long
Set wksData = Worksheets('Sheet1') Set wksFormula = Worksheets('Sheet2')
Set rngFormula = wksData.UsedRange.SpecialCells(xlCellTypeFormulas) wksFormula.Cells.Clear
'在wksFormula工作表中放置公式 For Each rng In rngFormula i = i + 1 wksFormula.Range('A' & i).Value= Mid(rng.Formula, 2, (Len(rng.Formula))) Next rng End Sub
代码中,wksData代表公式所在的工作表,即你想要获取这个工作表中的公式;wksFormula代表放置所获取的公式的工作表。由于Excel会将等号开头的表达式当作公式,因此我们先除去公式开头的等号,这样就能顺利地放置公式文本了。
Q:如何通过用户窗体来显示相应的工作表? A:在VBE中,插入一个用户窗体,在其中放置一个列表框和两个按钮,然后在该用户窗体模块中输入下面的代码: Private Sub CommandButton1_Click() Dim i As Integer, str As String For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) = True Then str = ListBox1.List(i) End If Next i Worksheets(str).Activate End Sub
Private Sub CommandButton2_Click() Unload UserForm2 End Sub
Private Sub UserForm_Initialize() Dim wks As Worksheet For Each wks In ThisWorkbook.Worksheets ListBox1.AddItem (wks.Name) Next wks End Sub
运行后的效果如下图1所示:
图1
其中,当用户窗体初始化时左侧的列表框显示工作簿中所有工作表的名称,选取其中一个工作表名称后,单击右侧的“激活选取的工作表”按钮,会使该工作表成为当前工作表。单击“关闭”按钮使用户窗体消失。
Q:能不能遍历所有用户窗体,获取每个用户窗体的名称? A:在VBE中,插入一个标准模块,输入下面的代码: Sub testListUserFormName() Dim str As String Dim VBC As VBIDE.VBComponent
str = '已经创建的用户窗体如下:'
For Each VBC In ThisWorkbook.VBProject.VBComponents If VBC.Type = vbext_ct_MSForm Then str = str & vbCr & VBC.Name End If Next VBC
If str = '' Then MsgBox '没有找到用户窗体!' Exit Sub End If
MsgBox str End Sub
如果VBE中有UserForm1和UserForm2两个用户窗体,运行上述代码后的效果如下图2所示:
图2 本文属原创文章,转载请注明出处。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 |
|
来自: zhangshoupen > 《我的微表》