计算列中的单词,然后在userform

时间:2018-02-07 09:42:58

标签: excel vba excel-vba report userform

我不知道这是否可行,或者我只是在搜索错误的关键字。

基本上我有多页排列的用户表单,我想知道其中一个多页面是否可以显示工作表上的内容。

示例:在电子表格(数据)列B资产描述:笔记本电脑,台式机,打印机等,然后用户表单查看工作表(数据),然后在用户表单上显示最终用户运行笔记本电脑= 7 Desktop = 9 Printers = 2.

取决于匹配查找单词的列中的单词数。

我不知道从哪里开始创建代码,我在搜索Google时无法在任何网站上找到任何帮助(VBA用户表单显示列数)。

对不起如果我在这里没有正确询问,只是完全失去了该做什么。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以创建一个功能来执行此操作。

将列中的所有单元格分配为字符串,然后将该字符串推入函数中。

Function countWords(ByVal sText As String) As Long

    Dim sTextArr() As String
    sTextArr = Split(sText, " ")
    countWords = UBound(sTextArr) + 1

End Function

Sub test()

    Dim myStr As String
    myStr = "The dog barked non-stop. I wish he would stop"
    MsgBox countWords(myStr)

End Sub

您只需将countWords的值分配给您的用户表单控件。

答案 1 :(得分:1)

如果要将值添加到UserForm中包含两列的ListBox中,将第一列中的项目和第二列中的项目数量添加,则以下内容将有所帮助:

Sub foo()
Dim k As Variant
Dim d As Variant
Dim c As Range
Dim rng As Range
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column B
Set rng = ws.Range("B2:B" & LastRow)
Set d = CreateObject("Scripting.Dictionary")

For Each c In rng
    d(c.Value) = d(c.Value) + 1
Next c

For Each k In d
    If k <> "" Then
        ListBox1.AddItem k
        ListBox1.List(ListBox1.ListCount - 1, 1) = d(k)
    End If
Next k
End Sub