excelvba代码大全,excelvba常用代码
EXCEL VBA的代码?
假定表格中肯定有“+”号存在,代码如下,如果没有“+”号,则先增加判断语句,否则程序会出错。
Sub 删除行()
Ro = ActiveSheet.UsedRange.Find("+", , , 2).Row - 1
If Ro 0 Then Range("1:" Ro).Delete
End Sub
EXCEL VBA代码?
我的程序不是固定10行空白,是自动跳过空白,示例数据:
执行后的效果:
程序窗口:
程序文本:
Sub 合并C列()
? Dim i, i1, i2, j, s$
? j = 3 'C列
? i1 = Cells(Rows.Count, j).End(xlUp).Row '最后一行
? While i1 1
? ? ? i2 = Cells(i1, j).End(xlUp).Row '本组开始行
? ? ? s = ""
? ? ? For i = i2 To i1
? ? ? ? ? s = s Chr(10) Cells(i, j)
? ? ? Next i
? ? ? s = Right(s, Len(s) - 1)
? ? ? With Range(Cells(i2, j), Cells(i1, j))
? ? ? ? ? .ClearContents
? ? ? ? ? .Merge
? ? ? End With
? ? ? With Cells(i2, j)
? ? ? ? ? .Value = s
? ? ? ? ? .WrapText = True
? ? ? End With
? ? ? i1 = Cells(i2, j).End(xlUp).Row '上一行
? Wend
End Sub
关于EXCEL VBA代码!
默认的是不信任对VBA的访问,基本上在别人机器你这类代码都会失败,简单起见就删除文件吧。
自杀代码:
With?ThisWorkbook??'自杀
????????.Saved?=?True
????????.ChangeFileAccess?xlReadOnly
????????Kill?.FullName
????????.Close?False
End?With
excel宏vba代码每段解释一下
Sub test2() Dim i!, a1$, a2$, r As Range Columns(5).ClearContents '第5列清空 i = 4 '第4行开始输出 Set r = Range("A:A").Find(1) If r Is Nothing Then Exit Sub '找数据,找不到退出程序 a1 = r.Address '第一个找到的地址 Do Until a1 = a2 '一直找,直到又找到第一个 If r.Offset(, 1) = 10 Then '格子的右边是10 Cells(i, 5) = r.Offset(, 2) '在第5列输出 i = i + 1 '输出增加一行 End If Set r = Range("A:A").FindNext(r) '找下一个 a2 = r.Address LoopEnd Sub
excel中的VBA代码解释
一,Range("b2:f5").Interior.ColorIndex = xlNone
Range是区域对象,Range("b2:f5")就是指左上角为“B2”单元格,右下角为“F5”单元格这样一个连续的区域,应该是4行5列的一个区域。
Interior.ColorIndex 是指填充颜色(这里是采用ColorIndex严格说是颜色常数)
xlNone 表示清除原来的填充色。
所以这行代码就是清除区域Range("b2:f5")里的填充色。
二,Cells(x, y).Interior.ColorIndex = 3
Cells是单元格对象,Cells(x, y)就是指第x行y列对应的单元格
所以该行作用是,设置Cells(x, y)单元格的填充颜色常数为3。(具体3对应什么颜色我也背不出来)
三,DoEvents,这个都使用在反复执行用户循环的代码里。我们有体会,当执行次数很多的循环时,计算机的执行权完全被该循环控制,计算机无法执行其他操作,为此执行该语句,是让计算机可以执行其他操作。
四,If a = 1 Then Exit Sub
当 a = 1 退出过程,即结束运行该过程。
五,GoTo 10
无条件转移语句,就是转移到行号为10的那个语句。
你的这个过程如下:
Sub 随机()
Dim x As Integer
Dim y As Integer
a = 0
Randomize '初始化
10:
x = Rnd() * (5 - 2) + 2
y = Rnd() * (6 - 2) + 2
Range("b2:f5").Interior.ColorIndex = xlNone
Cells(x, y).Interior.ColorIndex = 3
DoEvents
If a = 1 Then Exit Sub
GoTo 10
End Sub
而下面是另一个过程,上面没有语句调用过它,所以无关;
Sub 结束()
a = 1
End Sub
分析你上面的过程,似乎进入死循环,因为没有使得 a = 1 的操作?
10:
。。。。。。
。。。。。。
Goto 10
从上到下,执行到Goto 10,又回到10:那一行,反复无限循环。