【发布时间】:2016-07-21 07:53:31
【问题描述】:
希望你能帮我解决我的小问题..
我的文件包含 3 个工作表。 1.数据 2. 报告 3. 帮助工作表进行一些计算
当我打开文件时,我单击一个按钮来执行计算,这会启动一些请求。此请求首先将数据从工作表 1(数据)复制到工作表 3(帮助工作表)。在进一步请求之后,所有这些都在用户表单中完成,工作表 3 中的数据被过滤以获取请求的数据。用户表单从工作表 3 中获取数据,并通过脚本字典显示在组合框中。
问题来了:
我的数据包含在三个电子表格中。 如果我点击工作表 2 上的按钮,请求会在第一时间完成它们的工作。如果我想再做一次(再次点击按钮实现复制,过滤和计算),过滤器设置错误,计算也是如此。 但是,如果打开工作表 3(当前视图在工作表 3 上,而不是在按钮所在的工作表 2 上)并且我在编辑器窗口中手动启动请求和计算,则过滤器和计算总是正确的。
我认为错误是组合框生成字典时分别获取其数据并应用过滤器。过滤器始终是在第一个请求时设置的过滤器。随着进一步的请求,过滤器不会改变,它仍然是第一个请求的过滤器。 也许在请求和计算之后应该有某种重置?
我对用户窗体/组合框/脚本字典使用了以下代码:
Sub UserForm_Initialize()
'Taking the data from the helping working sheet
Dim objDic As Object
Dim lngZ As Long
Dim i As Integer
Set objDic = CreateObject("Scripting.Dictionary")
With Sheets("helpsheet")
For i = 12 To Sheets("helpsheet").Cells(.Rows.Count, 3).End(xlUp).Row
If Sheets("helpsheet").Rows(i).Hidden = False Then
ComboBox2.AddItem .Cells(i, 3)
objDic(.Cells(i, 3).Value) = 0
End If
Next
End With
Me.ComboBox2.List = objDic.keys
With Me.ComboBox2
.AddItem "all areas"
End With
End Sub
我真的希望有人可以帮助我,因为我无法继续:(
谢谢
拉法
【问题讨论】: