vba for excel 随笔

q1: excel 没有vba入口

1. 快捷键:Alt + F11

2. 调出开发工具

1. 打开文件后,依次点击菜单项【文件】-【选项】;
2、在“Excel”选项界面中点击左侧的【自定义功能区】;
3、在自定义功能区主选项卡下,找到【开发工具】,打上钩,然后确定;

 

range, cells

表示单元格时:range("A1")表示第一行第一列的单元格,实质上于cells(1,1)效果一样。

表示连续的区域:第一是range("起始单元格","结束单元格"),第二是range("起始单元格:结束单元格")

Range("a1", "b4").Select

Range("a2:b4").Select

表示不连续的区域:range("起始单元格1:结束单元格1,起始单元格2:结束单元格2")

Range("a1:b2,c3:d4").Select

表示行和列:例如,我想选择第一行,则可以这样range("1:1"),如果想表示第一列range("a:a")

Range("1:1").Select
Range(
"a:a").Select

 

for each

Dim cell As Range
For Each cell In Sheet2.Range("a1:b3")
MsgBox cell.value
Next cell

 

 comboBox

显示多列内容

rowsource属性:可以从工作表中导入数据 。

Columnheads属性:显示列标题,只在引用工作表数据源时才有效,而且数据源不能包括标题行。

ColumnCount属性:设置组合框可显示的列数。

TextColumn属性:选取多列时显示第N列的内容。

BoundColumn属性:指定返回第N列的值,作为窗体的数值。

ListRows属性设置,不含标题行

 ColumnWidths属性:设置下拉列表的列宽,可以用三种单位:厘米、磅、英寸。

 ShowDropButtonWhen 属性:可以设置是否显示下拉按钮图标。如果写了获得焦点自动打开下拉列表的代码,似乎不设置也行,但有图标会比较清晰。

DropButtonStyle 属性:设置下拉按钮的类型。

  

VBA sub 与 function 的区别

sub称为过程, function称为函数,他们之间的唯一区别是function有返回值。
完全可以把sub写成function,只要不用function的返回值就可以了。C语言就只有函数而没有过程,因此一般情况下都可以用function来代替sub。
但这两段代码对于excel的运行位置不同。sub会出现在宏里,而function会出现在插入函数中。

函数和过程的调用---无参数时不能带括号!---需要使用返回值时带括号

 

 

case

 

 

 

 

 

VBA 比较运算符

| S / N | 运算符 | 说明 | 范例 | 输出 |
| 1 | = | 相等:检查两个值是否相等。 它也用作赋值运算符 | 如果 x = z | 如果它们相等则返回 true,否则返回 false |
| 2 | < | 小于:此运算符用于减去数字 | 如果 x < z 则 | 如果 x 小于 z,则返回 true,否则返回 false |
| 3 | > | 大于:此运算符用于将数字相乘 | 如果 x > z 则 | 如果 x 大于 z,则返回 true,否则返回 false |
| 4 | < > | 不等于:此运算符用于除数 | 如果 x < > z | 如果它们不相等,则返回 true,否则返回 false |
| 5 | < = | 小于或等于: | 如果 x < = z | 如果 x 小于或等于 z,则返回 true,否则返回 false |
| 6 | > = | 大于或等于: | 如果 x > =则 | Returns true if x is greater than z, else it returns false |

 

 array

数组清零:erase

 

InStr

InStr()函数返回一个字符串第一次出现在一个字符串,从左到右搜索。返回搜索到的字符索引位置。

语法

InStr([start,]string1,string2[,compare])

 

参数说明
  • Start - 一个可选参数。指定搜索的起始位置。搜索从第一个位置开始,从左到右。
  • String1 - 必需的参数。要搜索的字符串。
  • String2 - 必需的参数。要在String1中搜索的字符串。
  • Compare - 一个可选参数。指定要使用的字符串比较。它可以采取以下提到的值:
    • 0 = vbBinaryCompare - 执行二进制比较(默认)
    • 1 = vbTextCompare - 执行文本比较

示例

参考以下代码 -

Private Sub Constant_demo_Click() 
   Dim Var As Variant 
   Var = "Microsoft VBScript" 
   MsgBox ("Line 1 : " & InStr(1, Var, "s")) 
   MsgBox ("Line 2 : " & InStr(7, Var, "s")) 
   MsgBox ("Line 3 : " & InStr(1, Var, "f", 1)) 
   MsgBox ("Line 4 : " & InStr(1, Var, "t", 0)) 
   MsgBox ("Line 5 : " & InStr(1, Var, "i")) 
   MsgBox ("Line 6 : " & InStr(7, Var, "i")) 
   MsgBox ("Line 7 : " & InStr(Var, "VB")) 
End Sub

当你执行上面的函数时,它会产生下面的输出。

Line 1 : 6
Line 2 : 0
Line 3 : 8
Line 4 : 9
Line 5 : 2
Line 6 : 16
Line 7 : 11

 

 
 

byVal 和 byRef 区别

ByVal是by Value, 也就是值传递

ByRef是by Reference,也就是引用传递

在VBA中默认是ByRef

 

byref ,被调用程序 按地址传递,传回主程序的参数,回调时会受影响。

按地址传递(ByRef),是指主程序直接将数据交给子过程(过程中定义传递方式),在过程中修改、调试、返回给主程序,主程序输出的是修改后的值。

VBA默认按地址传递,方便管理?

byval  ,被调用程序 按值传递,传回主程序的参数,回调时会不受改变。

按值传递(Byval),是指将主程序的值(副本一份)给子过程,过程对副本操作,主程序输出的仍是原值。若想输出值传递后的值,可在子过程中设置输出。

Function Test1(ByVal a As Long) As Long
    a = a + 1
    Test1 = a
End Function

Function Test2(ByRef a As Long) As Long
    a = a + 1
    Test2 = a
End Function

Function Test3(a As Long) As Long
    a = a + 1
    Test3 = a
End Function

Sub zz()
    Dim i As Long
    i = 10
    MsgBox (Test1(i))
    MsgBox (i)
    MsgBox (Test2(i))
    MsgBox (i)
    MsgBox (Test3(i))
    MsgBox (i)
End Sub

结果是 111011111212

 

数据类型与字符

 

Dim FirstName$

 上面的声明和Dim FirstName As String是一样的。

 

Set 语句

 将对象引用分配给变量属性

conf_field(conf_no_构建表, 1) = "构建表"

 

posted @ 2020-06-15 15:55  QIYUEXIN  阅读(234)  评论(0编辑  收藏  举报