使用VBA

时间:2018-09-24 15:16:29

标签: excel vba

我正在研究一个项目,以跟踪收容所中的人。

背景

在仪表板上有五个不同的ActiveX列表框。每个列表框代表一个位置(位置A,位置B,位置C等)。每个列表框都从名为“ Sheet A”,“ Sheet B”,“ Sheet C”等的工作表中获取数据。 一个人在用户表格中注册。该人的数据保存在“表格A”(总共46个单元格中包含数据)中,最重要的信息在“位置A”列表框中(10列)可见。所有列表框/表格具有相同的设置

在列表框中的一行上双击时,将打开“编辑”用户窗体,您可以在其中编辑此人的信息。关闭表单后,此人仍与以前位于相同的位置(行号/列表框/表格),但数据已更新。

在“编辑”表单中是一个名为“当前位置”的组合框。这样,您可以选择将人员移动到何处(位置A,位置B,位置C等)。一个人可以移入/移出所有列表框

如果某人位于“位置A”中,并且您想将其移动到“位置C”,则数据将使用VBA代码保存到“表C”。 例如:

    Sheets("C").Range("Anchorpoint_C").Offset(TargetRow, 4).Value = FirstName_TxtBox

    TargetRow = Sheets("Engine").Range("AJ6").Value + 1               ‘AJ6 contains a COUNTA formula that keeps track of the last populated row in the sheet)

然后VBA删除此人所在的行(在工作表A中) 例如:

    Sheets("A").Rows(Sheets("Engine").Range("AJ31").Value + 2).Delete   ‘AJ31 stores the row number where the persons data is located. It loads in to the cell when the Edit form opens.

最后,列表框被更新。 例如:

    With Worksheets("Dashboard").OLEObjects("Location_A_ListBox") 
    .ListFillRange = .ListFillRange 
    End With

问题

仅将数据保存到新位置(两页中的数据)时,Excel变得非常缓慢。将5-7个人保存在新位置后(数据仍保存在两张纸中),Excel崩溃。

将数据保存到新位置并删除原始位置的行时,Excel崩溃。

我尝试“手动”在工作表之间剪切和粘贴数据。但是在更新列表框时,它们包含空行,但在相应的工作表中没有空行。

其他信息

我是VBA的新手,使用的是瑞典语版Excel 2010。 我尚未声明任何变量,只是因为我不确定该怎么做。除了“移动的人的部分”之外,一切都可以顺利进行。我的计划是在整理代码后声明变量。 I enclose a picture of the ListBox properties, in case you can spot anything wrong there.

感谢您抽出宝贵的时间阅读本文章。

Image of EDIT FORM Image of EDIT FORM with (With ComboBox Current location)

0 个答案:

没有答案