【发布时间】:2016-11-30 01:26:58
【问题描述】:
我有一个 Excel 电子表格,在过去几天开始出现异常,我不确定这是我的 VBA 代码还是错误。在运行宏以将工作表 1 中的新数据行添加到工作表 2 中的表格后,可以“通过”工作表 1 看到工作表 2 - 这就像单元格“不填充”但实际上显示到工作表 2 而不是是白人。
Here's the spreadsheet, stored in Google Drive,欢迎下载看代码等。
这是我的 VBA 代码造成的还是错误,我该如何解决?
编辑:这是代码。第一个 sub 在按钮按下时调用,最后调用 sortTable
Sub addRows()
Dim rowLast As Long
rowLast = Worksheets("Inventory").Cells(Rows.Count, "C").End(xlUp).row
Dim relevantRow As Integer
relevantRow = rowLast + 1
Dim numRepeats As Integer
Dim numRepeatsRange As Range
Set numRepeatsRange = Range("newInv")
numRepeats = numRepeatsRange.Count
Dim relevantColumn As Integer
Dim relevantColumnRange As String
Dim copyFromCell As Range
Dim copyToCell As Range
Dim counter As Integer
For counter = 1 To numRepeats
relevantColumn = Worksheets("Index Lookup").Cells(counter + 1, 2).Value
Set copyFromCell = Worksheets("Input").Cells(16, counter + 1)
Set copyToCell = Worksheets("Inventory").Cells(relevantRow, relevantColumn)
copyToCell.Value = copyFromCell.Value
Next counter
Call sortTable
Worksheets("Input").Range("newInv").ClearContents
Worksheets("Input").Range("C16").Select
End Sub
Sub sortTable()
ActiveWorkbook.Worksheets("Inventory").ListObjects("Table14").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Inventory").ListObjects("Table14").Sort.SortFields. _
Add Key:=Range("C15"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Inventory").ListObjects("Table14").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
EDIT2:有问题的单元格在采取任何直接影响它们的操作后重置为正常 - 更改工作表,选择它们(甚至将选择拖到它们上面但实际上没有选择它们),编辑受影响的单元格之一。视觉干扰出现在我的按钮前面,但如果我单击该区域,它们的宏就会运行 - 这只是一个视觉问题。
我找到了一个临时解决方法:在子 addRows 中的上述代码下方,我选择单元格 A1:Z500,然后选择 C16(全选会清除视觉错误,但看起来很糟糕,所以我将选择重置为 C16) .随机信息仍然在屏幕上闪烁,但很快就消失了。 我仍然希望不必这样做 - 有什么想法吗?
EDIT3:我进一步调查并取出对 sortTable 的调用消除了问题。 sortTable 中的某些内容(仅作用于工作表 2)导致工作表 1 出现这种奇怪的视觉错误
【问题讨论】:
-
没有您的代码就无法判断 - 请edit your question 包含它。
-
“我的 VBA 代码或错误。”作为一般经验法则 - 这是您的代码。在我的一生中,我犯过成千上万的编程错误,但只遇到过少量出现在编程语言实现或主要软件工具中的错误的情况。
-
尝试“编辑” sheet1 上应该为空白但似乎正在显示某些内容的单元格之一 - 在您编辑时它是否在单元格中显示现有值?保存文件然后重新打开后问题会消失吗? (我的直觉是这是一个内存问题,甚至可能与 Excel 本身无关。)
-
另一件可能值得尝试的事情是在代码开头插入
Application.ScreenUpdating = False,并在结尾插入Application.ScreenUpdating = True。
标签: excel vba excel-2010