所以,我一直在阅读和挖掘如何解决这个问题,我还没有找到一个有效的解决方案。 我试过了: - 我没有"活动表格/工作簿"引用。 - 检查方法名称没问题。
我是VBA的新手,所以我从某个地方偷了这个功能并对它进行了一些调整。当我点击vba控制台中的播放按钮时,功能(和整个代码)正常工作,但是当我点击activeX按钮时它没有。 知道怎么办吗? 提前谢谢!
以下是button_click()中的代码:
Private Sub CommandButton1_Click()
Módulo1.Formatting_Number (Sheets("Hoja5").Range("AB8:AB23"))
Módulo1.WhereToInsertRow
End Sub
这是模块中的代码,可以从按钮调用:
Public Function LastRec(Myrng As Range, g As Integer)
For x = Myrng(1).Row To Myrng(Myrng.Count, 1).End(xlUp).Row
If Cells(x, Myrng.Column).Value = Cells(x + 1, Myrng.Column).Value Then GoTo continue
If Cells(x, Myrng.Column).Value = g Then
LastRec = x
Exit Function
End If
LastRec = CStr(g) & "Not FOUND"
continue:
Next x
End Function
Public Sub WhereToInsertRow()
Dim g As Integer
For g = 2 To 7
Sheets("Hoja5").Range("AB" & g + 6) = LastRec(Sheets("Hoja5").Range("O:O"), g)
Next g
For g = 14 To 23
Sheets("Hoja5").Range("AB" & g).Value = LastRec(Sheets("Hoja5").Range("O:O"), (g + 87))
Next g
End Sub
Public Sub Formatting_Number(rng As Range)
Dim cel As Range
For Each cel In rng
cel.NumberFormat = "0"
Next cel
End Sub
P.D:如果你好奇,原始函数返回从最后一个单元格开始的列中最后一次出现的值,我调整它,所以它现在从第一个单元格开始。
答案 0 :(得分:1)
Private Sub CommandButton1_Click()
Módulo1.Formatting_Number (Sheets("Hoja5").Range("AB8:AB23"))
Módulo1.WhereToInsertRow
End Sub
Public Function LastRec(Myrng As Range, g As Integer)
.
.
.
End Function
您的LastRec
函数需要2个参数,这两个参数都不是可选的。你只通过了1。
可能还有其他问题,但那是一个先发制人。
另外,更改
Módulo1.Formatting_Number (Sheets("Hoja5").Range("AB8:AB23"))
到
Módulo1.Formatting_Number Sheets("Hoja5").Range("AB8:AB23")
你不希望那对外面的parens()会弄乱你。
答案 1 :(得分:1)
你可以这样收紧它。最好还是指定其他参数,例如范围和/或表格。
Public Function LastRec(Myrng As Range, g As Integer)
Dim x As Long, rFind As Range
With Myrng
Set rFind = .Find(What:=g, After:=.Cells(.Count), Lookat:=xlWhole, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rFind Is Nothing Then
LastRec = rFind.Row
Else
LastRec = g & " not FOUND"
End If
End With
End Function
Public Sub WhereToInsertRow()
Dim g As Integer, r As Range
With Sheets("Hoja5")
Set r = .Range("O1", .Range("O" & Rows.Count).End(xlUp))
End With
For g = 2 To 7
Sheets("Hoja5").Range("AB" & g + 6) = LastRec(r, g)
Next g
For g = 14 To 23
Sheets("Hoja5").Range("AB" & g).Value = LastRec(r, g + 87)
Next g
End Sub
Public Sub Formatting_Number(rng As Range)
rng.NumberFormat = "0"
End Sub
Sub x()
Module1.Formatting_Number Sheets("Hoja5").Range("A8:A23")
Module1.WhereToInsertRow
End Sub