海南省BIM中心

 找回密码
 注册请加微信xycost

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 242|回复: 9

Excel-VBA集训营

[复制链接]

0

主题

2801

帖子

3430

积分

论坛游侠

Rank: 1

积分
3430
发表于 2014-6-21 15:55:43 | 显示全部楼层 |阅读模式
大家把的Excel中VBA编程技巧集中一下,内容要尽量详尽,能让新手能一目了然。

回复

使用道具 举报

0

主题

2801

帖子

3430

积分

论坛游侠

Rank: 1

积分
3430
发表于 2014-6-21 15:55:43 | 显示全部楼层
我先来一条
在 Visual Basic 中使用 Microsoft Excel 工作表函数
在 Visual Basic 语句中可以使用大多数 Microsoft Excel 工作表函数。若要查看可以使用的工作表函数列表,请参阅 Visual Basic 可使用的工作表函数列表。
注意 一些工作表函数在 Visual Basic 中是不实用的。例如:Concatenate 函数就不实用,因为在 Visual Basic 中可使用 & 运算符来连接多个文本值。
从 Visual Basic 中调用工作表函数
在 Visual Basic 中,通过 WorksheetFunction 对象可使用 Microsoft Excel 工作表函数。
以下 Sub 过程使用 Min 工作表函数来决定在某个单元格区域中的最小值。首先,将变量 myRange 声明为 Range 对象,然后将其设置为 Sheet1 上的 A1:C10 单元格区域。指定另一个变量 answer 为对 myRange 应用 Min 函数的结果。最后,answer 的值就被显示在消息框中。
Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub
如果您使用的工作表函数需要一个单元格区域引用作为参数,则必须指定一个 Range 对象。例如:您可以用 Match 工作表函数搜索单元格区域。可以在工作表单元格中输入公式,如“=MATCH(9,A1:A10,0)”。但是,您应在 Visual Basic 过程中指定一个 Range 对象来获取相同的结果。
Sub FindFirst()
myVar = Application.WorksheetFunction _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub
注意 Visual Basic 函数不使用 WorksheetFunction 识别符。函数可能和 Microsoft Excel 的函数同名但作用各异。例如:Application.WorksheetFunction.Log 和 Log 将返回不同的值。
在单元格中插入工作表函数
若要在单元格中插入工作表函数,请指定函数作为相应的 Range 对象的 Formula 属性值。以下示例中,将 RAND 工作表函数(可生成随机数)赋给了活动工作簿中 Sheet1 上 A1:B3 单元格区域的 Formula 属性。
Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub
示例
本示例使用工作表函数 Pmt 来计算住宅抵押贷款的支付额。请注意,本示例使用的是 InputBox 方法,而不是 InputBox 函数,因此该方法可以执行类型检查。Static 语句使 Visual Basic 保留三个变量的值;当下次运行该程序时,这些变量将显示为默认值。
Static loanAmt
Static loanInt
Static loanTerm
loanAmt = Application.InputBox _
(Prompt:="Loan amount (100,000 for example)", _
Default:=loanAmt, Type:=1)
loanInt = Application.InputBox _
(Prompt:="Annual interest rate (8.75 for example)", _
Default:=loanInt, Type:=1)
loanTerm = Application.InputBox _
(Prompt:="Term in years (30 for example)", _
Default:=loanTerm, Type:=1)
payment = Application.WorksheetFunction _
.Pmt(loanInt / 1200, loanTerm * 12, loanAmt)
MsgBox "Monthly payment is " & Format(payment, "Currency")

回复 支持 反对

使用道具 举报

0

主题

2903

帖子

2717

积分

论坛游侠

Rank: 1

积分
2717
发表于 2014-6-21 15:55:44 | 显示全部楼层
完整的 If...Then ┅ End 逻辑判断式。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row >= 2 And Target.Column = 2 Then
Target = 200
ElseIf Target.Row >= 2 And Target.Column = 3 Then
Target = 300
ElseIf Target.Row >= 2 And Target.Column = 2 Then
Target = 400
Else
Target = 500
End If
End Sub
这是个完整的 If 逻辑判断式,意思是说,假如 If 後的判断式条件成立的话,就执行第二条程序,否则假如 ElseIf 後的判断式条件成立的话,就执行第四条程序,否则假如另一个 ElseIf 後的判断式条件成立的话,就执行第六条程序。
Else 的意思是说,假如以上条件都不成立的话,就执行第八条程序。
他的执行方式是假如 IF 的条件成立的话,就不执行其它ElseIf 及Else 的逻辑判断式,假如 If 後的条件不成立的话才会执行 ElseIf 或 Else 逻辑判断式。第二个 ElseIf後的条件因为与 IF 後的条件一样,所以这个判断式後面的 Target=400 将是永远无法执行到的程序。

回复 支持 反对

使用道具 举报

0

主题

2903

帖子

2717

积分

论坛游侠

Rank: 1

积分
2717
发表于 2014-6-21 15:55:44 | 显示全部楼层
感觉不错,我也在研究VBA,以后常联系.QQ 120835153

回复 支持 反对

使用道具 举报

0

主题

2903

帖子

2717

积分

论坛游侠

Rank: 1

积分
2717
发表于 2014-6-21 15:55:44 | 显示全部楼层
怎么没人回,是不是大家对VBA不感兴趣呢?请各位把VBA的技巧集中一下,让大家有机会学习一下

回复 支持 反对

使用道具 举报

0

主题

2903

帖子

2717

积分

论坛游侠

Rank: 1

积分
2717
发表于 2014-6-21 15:55:44 | 显示全部楼层
不是不感兴趣而是水平不够只好先听讲了。

回复 支持 反对

使用道具 举报

0

主题

2645

帖子

2480

积分

论坛游侠

Rank: 1

积分
2480
发表于 2014-6-21 15:55:44 | 显示全部楼层
我也在研究ing
我也是水平不够,只好先听听看看了~~~~

回复 支持 反对

使用道具 举报

0

主题

2645

帖子

2480

积分

论坛游侠

Rank: 1

积分
2480
发表于 2014-6-21 15:55:44 | 显示全部楼层
对啊,大家可以申请一个qq群,比较方便

回复 支持 反对

使用道具 举报

0

主题

2645

帖子

2480

积分

论坛游侠

Rank: 1

积分
2480
发表于 2014-6-21 15:55:44 | 显示全部楼层
excel是不错,但平时对VBA编程就接触的少了。以前没时间,以后研究研究再来讨论。

回复 支持 反对

使用道具 举报

0

主题

2645

帖子

2480

积分

论坛游侠

Rank: 1

积分
2480
发表于 2014-6-21 15:55:44 | 显示全部楼层
我对Excel还有所了解能够进行一般的链接,但对于VBA就一无所知了.请楼主将VBA传上来研究研究.

回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条


QQ|小黑屋|手机版|Archiver|ChinaBIM ( 琼ICP备14001050号-1 )

GMT+8, 2024-12-22 16:27 , Processed in 0.026294 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表