1.办法一,你改成如下语句试试
If Grid1.Row <> Grid1.Rows - 1 Then SendKeys "{PGDN}"
If Grid1.Row <> 1 Then SendKeys "{PGUP}"
2.或使用以下代码,或许会更好一些,鼠标滚动一次只做一行滚动,我的一个软件里就是使用这种方法。
Public Function FlexScroll(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error Resume Next
Select Case wMsg
Case WM_MOUSEWHEEL
Select Case wParam
Case -7864320 '向下滚
Grid1.TopRow = Grid1.TopRow + 1
Case 7864320 '向上滚
Grid1.TopRow= Grid1.TopRow - 1
End Select
End Select
FlexScroll = CallWindowProc(Oldwinproc, hWnd, wMsg, wParam, lParam)
End Function
'//0悬赏分,你太小气了吧?呵呵
'//你这段代码是不是允许FlexGrid或HFlexGrid控件可以通过鼠标中键向上下滚动的,如果是,那Grid1表示FlexGrid或HFlexGrid控件,如果不是,那你增加一个On Error Resume Next后再试一下。
'//如果还有问题,那你需要详细描述你代码要达到的目的,我再帮你看看。
可能拷贝临时文件已存在的话会出错,先判断一下临时文件已存在的话先删除它。
if dir (F2Name)<>"" then kill F2Name
FileCopy F1Name, F2Name
Set yy = aa.Workbooks.Open(Filename:=F2Name) 这句打开了临时文件,在拷贝的时候可能它还没关闭。先close 它。
弄错了,这句在下面,不会有可能,有没有其它地方打开了临时文件。
这种情况有一种可能,假如这些代码在一个按钮事件中,而aa 是个模块变量,那么第二次点击按钮时由于临时文件上次打开还未关闭,就无法拷贝。
这应该是检测鼠标滚轮的代码
endkeys好像在win7 以后使用都会出现“拒绝权限”的错误
Grid应该是代码的原作者使用的一个控件,可以设置选定的第一行
主要看楼主是什么用途的,