Excel2003中使用VBA重算问题

现需要实现如下功能:当单击B17:B23内任意单元格时,在K1格记录单击的单元格的行号再将A1置为活动单元格,再进行所有公式的重算要求当重复点击B17:B23内单元格时,... 现需要实现如下功能:
当单击B17:B23内任意单元格时,在K1格记录单击的单元格的行号
再将A1置为活动单元格,再进行所有公式的重算

要求当重复点击B17:B23内单元格时,每次点击的行号均被记录起来(我的理解是使用迭代次数为1的循环引用X=X&","&K1),但是同时要排除记录其他行号,比如1,的可能性.

现在使用的是如下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If ActiveCell.Row >= 17 Then
If ActiveCell.Row <= 23 Then
If ActiveCell.Column = 2 Then
Range("K1") = ActiveCell.Row
ActiveSheet.Cells(1, 1).Select
Calculate
End If
End If
End If
End Sub
按我的理解就是顺序执行,先在K1取得行号,再自动选中A1,然后再重新计算
可是现在单击后直接跳到A1格,K1的值从来没变过,而且也不会重算,为什么呀

我是VBA菜鸟,恳请各位大虾帮个忙%>_<%
展开
 我来答
qcssnjc
2011-11-27 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:100万
展开全部
请改成:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Selection.Row >= 17 And Selection.Row <= 23 and selsetion.column=2 Then
Range("K1") = Selection.Row
ActiveSheet.Cells(1, 1).Select
Calculate
End If
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
windimi007
2011-11-27 · TA获得超过1041个赞
知道小有建树答主
回答量:852
采纳率:0%
帮助的人:812万
展开全部
不知道是不是这个意思?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Target.Row > 16 And Target.Row < 24 Then
Range("K1") = Target.Row
Range("A1").Select
Calculate
End If
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HuaGeG
2011-11-27 · TA获得超过7708个赞
知道大有可为答主
回答量:8038
采纳率:26%
帮助的人:2206万
展开全部
这段代码除了if嵌套不简洁,没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式