分享

问与答31:如何获取公式、在用户窗体中操作工作表、列出用户窗体名称等问题的答疑

 zhangshoupen 2018-02-04


 

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:如何通过用户窗体来显示相应的工作表?

AVBE中,插入一个用户窗体,在其中放置一个列表框和两个按钮,然后在该用户窗体模块中输入下面的代码:

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:能不能遍历所有用户窗体,获取每个用户窗体的名称?

AVBE中,插入一个标准模块,输入下面的代码:

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中有UserForm1UserForm2两个用户窗体,运行上述代码后的效果如下图2所示:

 

2



 

本文属原创文章,转载请注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多