㈠ 我在Excel中的宏阅读一段VBA程序中,碰到一些语句,有点不是很懂,求解释下,回答的详细,另外还有加分。
第一句本意是获得最后记录行号,但语句中有错误,1 改为 l ,xlup 。
finalrow = [a1].CurrentRegion.Rows.Count 或 = [A65536].End(xlUp).Row 更简洁。
第二句获得一个地址,假设 finalrow 等于5,则 v1 等于 $C$6,即 a5 偏移 (1,2)位置,改用=cells(finalrow,1).offset(1,2)更易阅读。另外v1应是变量,若是单元格,该用 [v1]
第三句,先假设 myrow 为1,mycolumn 为 1 ,则 set 一句定义变量 myrange 为 range("a1"),也可表示为[a1],下一句则为[a1]赋值为 $A$1,单元格a1显示 $A$1
第四句本意似乎将a2及其周围有数据区域设置绿色底色,但少了俩引号:
ActiveSheet.range("A2").CurrentRegion.Interior.ColorIndex=4
若a2是range变量则无错。
第五句,变量f1赋值为lastcell的行号加3。同上若本意是为单元格 F1 赋值,应 [f1],或range("f1") ,另外建议程序中不要用类似单元格名称的变量名。
最后一句,range变量a2向下偏移d行向右偏移1列的单元格赋值为变量 ac 的值 。若改为
range("a2").offset(d,1).value ,设 d = 3 ,则为单元格 b5 赋值。
㈡ 在EXCEL中。用VBA程序编写:
不知道你是不是要放在工作表的change事件来处理这件事.所谓工作表的change事件就是当工作表的单元格内容发生变化后触发这个事件.并自动执行相关代码.
这是我按你的要求写的放在工作表change事件里的代码 因为不知道回文的位置 所以我假定回文是在A列.yes no 输出在B列同行的单元格.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Dim FXstr
FXstr = StrReverse(Target.Value)
If FXstr = Target.Value Then
Target.Offset(0, 1) = "YES!"
Else
Target.Offset(0, 1) = "NO!"
End If
End If
End Sub
如果要用宏手动执行用下面的代码 ,假设回文在A1单元格
Sub 检查回文()
Dim FXstr
FXstr = StrReverse(Range("A1").Value)
If FXstr = Range("A1").Value Then
Range("A1").Offset(0, 1) = "YES!"
Else
Range("A1").Offset(0, 1) = "NO!"
End If
End Sub
㈢ 如何用EXCEL VBA编写模糊查询程序,并将结果显示在工作表中
不难实现,但代码就懒得写了。
步骤:
1、利用INPUTBOX()获得想查询的内容,并存放到局部变量INPUTDATA 中
2、用DIM MYRANGE AS RANGE 和以下语句组合进行查找
Set MyRange = Sheets("工作表名称").Cells.Find(what:=INPUTDATA, After:=ActiveCell, LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False)
3、用条件语句进行判断是否找到或符合
If MyRange Is Nothing Then
MsgBox "没找到符合条件的记录!"
.....
else
找到的话,进行相应的单元格赋值操作
.....
endif
4、用将上述步骤嵌套到一个循环语句内,以便继续查找。