VBA遍历所有单元格,并在指定单元格输入内容

如图,从第一个单元格开始遍历,找到符合内容单元格所在位置,我用其他语言描述一下,没学过VB哈哈
sub test()
dim i,j as integer
for i=1 to 10000
for j=1 to 10000
if cells(i,j).value 等于 2012年度考核
cells(i,j)的下面单元格赋值2013,右边赋值8,再右边赋值8
cells(i,j)的下面的下面单元格赋值2014,右边赋值4,再右边赋值5

意思就这样,让代码自动找到2012考核表,然后在后面自动添加两张表,并加日期。份数太多。

第1个回答  推荐于2017-10-10

试试这个是不是你想要的结果

Sub test()
 Dim i,j as integer
For i=1 to 10000
  For j=1 to 256
   If cells(i,j) = "2012年度考核"
     cells(i+1,j+1) = 2013
     cells(i+1,j+2) = 8
     cells(i+1,j+3) = 8
        cells(i+2,j+1) = 2014
        cells(i+2,j+2) = 4
        cells(i+2,j+3) = 5
    End If
   Next
 Next   
 End Sub

追问

顺便了解下语法
第一个next是哪个变量自增?

追答

从内向外

第一个Next 是 J


写成这样可能更直观一点:

     Next  j
   Next  i

本回答被提问者采纳
第2个回答  2015-07-16
为什么要遍历所有单元格呢,你查找指定的单元格就行了
sub test()
Dim i, j As Integer

For i = 1 To 10000 '1000行最大

For j = 1 To 3 'A,B,C三列

If Cells(i, j).Value = "2012年度考核" Then

Cells(i, j + 1) = "2012" '这里可以改为其他单元格的值

Cells(i, j + 2) = "5"

End If

Next

Next
第3个回答  2015-07-16
sub test()
    dim rng as range
    set rng=activesheet.usedrange.find(what:="2012年度考核",lookat:=xlwhole)
    if not rng is nothing then
        rng.offset(1,0)="2013年度考核"
        rng.offset(1,1)=2013
        rng.offset(1,2)=8
        rng.offset(1,3)=8
        rng.offset(2,0)="2014年度考核"
        rng.offset(2,1)=2014
        rng.offset(2,2)=4
        rng.offset(2,3)=5
    end if
end sub

第4个回答  2015-07-16
Option Explicit

Sub test()
Dim cel As Range
If GetRange(ThisWorkbook.ActiveSheet.UsedRange, cel, "2012年度考核") Then
cel.Offset(1, 0) = "2013年度考核": cel.Offset(2, 0) = "2014年度考核"
cel.Offset(1, 1) = "2013": cel.Offset(2, 1) = "2014"
cel.Offset(1, 2) = 8: cel.Offset(2, 2) = 4
cel.Offset(1, 3) = 8: cel.Offset(2, 3) = 5
End If

End Sub

Function GetRange(rng As Range, cel, myStr As String) As Boolean
On Error GoTo L_end
Set cel = rng.Find(myStr, LookIn:=xlValues, lookat:=xlWhole)
GetRange = True
Exit Function
L_end:
GetRange = False
Debug.Print Err.Description
End Function