简单宏写法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题一:回车后自动返回指定单元格
代码1:
Private Sub Worksheet_Change(ByVal Target As Range)
Cells(Target.Row + 1, 1).Select
End Sub
代码2:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column > 2 Then Target.Offset(1).Offset(, -2).Select
End Sub
以上两个调试可以使用。
方法3:
下面截图是在excel里面制作的VIP学员填写表。
问题:如何在黄色区域的单元格自动跳转。比如在“姓名”后面的黄色单元格填写信息之后,按下回车键自动跳转到“QQ”后面的单元格,填写完毕,按下回车键又自动跳转到“班级”后面的黄色单元格……以此类推,知道如何实现吗?
就是按回车后,光标能在黄色的单元格之间进行跳转。
实现excel单元格自动跳转的操作步骤如下:
第一步,按住CTRL键的同时,分别单击选取所有黄色单元格,右键菜单中"设置单元格格式" - 保护- 取消"锁定"前的勾。
第二步,保护工作表。小编使用的excel是2007版本,依次单击“审阅——保护工作表”,保护时去掉“选定锁定单元格”前的勾选。不用输入密码,单击确定。
简单的两步设置,按下回车后,就可以自动在黄色单元格之间跳转了,而不用跳转到其他单元格。
温馨提示:“文件- Excel选项- 高级- 按enter键的移动的方向,可以调整按回车键后光标的移动方向。
很酷的excel技巧!牢记哦,上面的教程适用于excel单元格跳转输入,也很常用的技巧。
代码3:(没有调试)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim j As Integer
i = Target.Row
j = Target.Column
If j = 4 Then Cells(i + 1, j - 3).Activate
End Sub
问题二:当在任意单元格输入数据回车后,如果这时[D3]=2,光标自动返回原来的单元格
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Target
If rng.Address = [d3].Address Then Exit Sub
If [d3] = "2" Then
MsgBox "D3单元格值为2,返回"
rng.Select
End If
End Sub
问题四:查找连续3行数据相同的做标记
Sub test()
Dim SArr, TArr()
SArr = Range("c1:c" & [c1].End(xlDown).Row)
ReDim TArr(1 To UBound(SArr), 1 To 1)
For I = 1 To UBound(SArr) - 2
If SArr(I, 1) = SArr(I + 1, 1) And SArr(I, 1) = SArr(I + 2, 1) Then
TArr(I, 1) = "999": TArr(I + 1, 1) = "999": TArr(I + 2, 1) = "999"
End If
Next
[e1].Resize(UBound(TArr), 1) = TArr
End Sub
=OFFSET($A$1,SMALL(IF($B$1:$B$26>=5>($B$1:$B$26>7),ROW($1:$26),27),COLUMN(A 1))-1,ROW()-1)&""
Sub 计算数字()
ar = [a1].CurrentRegion
Dim b(9)
For i = 1 To UBound(ar)
ReDim a(9)
For j = 1 To 3
a(ar(i, j)) = 1
Next
For j = 0 To 9
b(j) = b(j) + a(j)
Next
Next
[f1].Resize(, 10) = b '输出各行数字出现总次数的统计结果数组b
For i = 0 To 9
m = WorksheetFunction.Max(b)
If i > 3 Then If m < t Then Exit For
n = WorksheetFunction.Match(m, b, 0) - 1
If i < 4 Then
s = s & vbCrLf & n & "(" & m & ")"
Else
s = s & " | " & n & "(" & m & ")"
End If
b(n) = 0
t = m
Next
[e1] = s '输出至少4个出现次数最多的数字组合。包含和第4个数出现次数相同的所有
数字
MsgBox s
End Sub
Selection.Copy
Sheets("Sheet2").Select
ActiveSheet.Paste
Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Range("C27:C29").Select
Sheets("Sheet3").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown 此行显示黄色
Range("E4").Select
ActiveSheet.Protect
End Sub
Sub caxun()
If Range("c3") = "" Then Exit Sub
Rows("5:5").Insert Shift:=xlDown '''''''''Selection.Insert Shift:=xlDownon.Insert Shift:=xlDown Range("c3").Copy Range("B5") ''''''.Select
Range("c3") = ""
Range("a5") = Range("a3").Value & Range("b3").Value '''.Copy ''''''.Select
Range("a3:b3") = ""
Range("C1:ah1").Copy Range("C5") '''''''''.Select
Range("b5:ah5").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Paste
Application.CutCopyMode = False
Rows("5:5").Interior.ColorIndex = xlNone
Rows("5:5").Font.ColorIndex = 0 ''''''Select
Range("A1").Select
Selection.Copy