目录

1.各种数据类型

2.VBA定义公共数组(全局都可以使用)

3.读写文件

SJIS 写入

UTF8 写入

读取 SJIS

读取 UTF-8

4.异常处理

5.忽略错误

6.其他常用1

7.其他常用2:读取(多个)Excel文件

8. ★★★ 各种常用操作总结 ★★★

9.事件相关处理 (保存,离开单元格等操作时,触发处理)

10.定义(调用)有返回值的函数

11.VBS相关操作

12.Variant   变量类型



---

1.各种数据类型

---


'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'*
'*  自定义学生对象
'*  做成时间:2020/01/20
'*  做成者: sun
'*  跟新日:
'*  更新者:
'*
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Type STUDENT_INFO'学号stuNo As StringstuName As StringstuAge As StringstuSexCode As String
End Type'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'*
'*  定义各种数据类型,处理学生对象情报
'*  做成时间:2020/01/20
'*  做成者: sun
'*  跟新日:
'*  更新者:
'*
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Sub getStudentInfo()' 从Excel的Sheet页中取得情报 例子' Dim sheet As Worksheet' Set sheet = Worksheets("testSheetName")' cellValue = sheet.Cells(2, 3) '2C 单元格 "1001,张三,30,1、1002,李四,31,1、1003,XiaoHong,29,2"' MsgBox cellValue' 全部学生信息 以字符串形式保存Dim allStudentInfo As StringallStudentInfo = "1001,张三,30,1、1002,李四,31,1、1003,XiaoHong,29,2"' 全部学生信息 以数组形式保存【数组使用】Dim studentInfoList() As StringstudentInfoList = Split(allStudentInfo, "、")' 全部学生姓名信息 以key-学号  value-姓名 的Map形式保存Dim studentDataList As Object '【数据字典使用-定义】Set studentDataList = CreateObject("Scripting.Dictionary")' UBound 返回数组的上界For i = 0 To UBound(studentInfoList)' 循环设定每个学生的信息Dim stuObject As STUDENT_INFO '【自定义数据类型使用】stuObject = setStudentInfo(studentInfoList(i))' 以学号作为Key,存储上面设定好的学生的信息' studentDataList.Add stuObject.stuNo, stuObject  '不好用,无法保存自定义对象studentDataList.Add stuObject.stuNo, stuObject.stuName '【数据字典使用 - 设定值】Next' 显示学号是「1002」小明同学的信息If studentDataList.exists("1002") Then '【数据字典使用 - 取值】MsgBox studentDataList.Item("1002") '【数据字典使用 - 取值】End IfEnd Sub'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'*
'*  设定单个学生对象情报
'*  做成时间:2020/01/20
'*  做成者: sun
'*  跟新日:
'*  更新者:
'*
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Public Function setStudentInfo(studentInfo As String) As STUDENT_INFO' 单个学生的信息Dim infos() As Stringinfos = Split(studentInfo, ",")' 使用上面定义的学生对象Dim stuObject As STUDENT_INFOstuObject.stuNo = infos(0)stuObject.stuName = infos(1)stuObject.stuAge = infos(2)stuObject.stuSexCode = infos(3)' 设定返回值setStudentInfo = stuObjectEnd Function

----

2.VBA定义公共数组(全局都可以使用)

public sqlListpublic Function sql_init()ActiveWorkbook.sheet("sql").ActivateActiveWorkbook.sheet("sql").Selectvar1 = ActiveSheet.Range("C2").valuevar2 = ActiveSheet.Range("C3").valuevar3 = ActiveSheet.Range("C4").valuesqlList= Array(var1, var2, var3)End Function

扩展

「プロシージャの外では無効です」错误发生原因
只写了End,而没有写 End Function

----

3.读写文件

ファイルの操作(Shift-JIS/UTF8対応)[ExcelのVBA]

SJIS 写入

Private Sub CommandButton2_Click()Dim fileNo As Integer  ' ファイル番号' ファイルを開く為のファイル番号を取得fileNo = FreeFile' 指定されたファイルを開く(ない場合は作成する)Open "Sjisの書き込みテスト.txt" For Output As #fileNo' 一行毎に文字列を書き込むPrint #fileNo, "エクセル講座"Print #fileNo, "http://www.petitmonte.com/excel/excel.html"Close #fileNoEnd Sub

UTF8 写入

Private Sub CommandButton4_Click()Dim Stream As Object' VB標準のADODB.Streamオブジェクトを作成するSet Stream = CreateObject("ADODB.Stream")' ストリームの文字コードをUTF8に設定するStream.Charset = "UTF-8"' ファイルのタイプ(1:バイナリ 2:テキスト)Stream.Type = 2' ストリームを開くStream.Open' ストリームの保存形式をテキスト形式にするStream.WriteText "エクセル講座" & vbCrLf & "http://www.petitmonte.com/excel/excel.html"' ストリームに名前を付けて保存する(1は新規作成 2は上書き保存)Stream.SaveToFile ("utf8の書き込みテスト.txt"), 2' ストリームを閉じるStream.CloseSet Stream = NothingEnd Sub

--

读取 SJIS

Option ExplicitPrivate Sub CommandButton1_Click()Dim fileNo As Integer  ' ファイル番号Dim buffer As String   ' 一時的に文字列を格納' ファイルを開く為のファイル番号を取得fileNo = FreeFile' 指定されたファイルを開くOpen "C:\excel_vba_22_sjis.txt" For Input As #fileNo' ファイルがEOF(ファイルの終端)になるまでループをするDo Until EOF(fileNo)' ファイルから一行づつbufferに読み込むLine Input #fileNo, buffer' 読み込んだ一行をイミディエイトに出力Debug.Print bufferLoopClose #fileNoEnd Sub

读取 UTF-8

Private Sub CommandButton3_Click()Dim buffer As String ' 一時的に文字列を格納Dim Stream As Object' VB標準のADODB.Streamオブジェクトを作成するSet Stream = CreateObject("ADODB.Stream")' ストリームの文字コードをUTF8に設定するStream.Charset = "UTF-8"' ファイルのタイプ(1:バイナリ 2:テキスト)Stream.Type = 2' ストリームを開くStream.Open' ストリームにファイルを読み込むStream.LoadFromFile ("C:\excel_vba_22_utf8.txt")' ファイルの中身をbufferへ代入buffer = Stream.ReadText' ストリームを閉じるStream.Close' イミディエイトへ出力  Debug.Print bufferSet Stream = Nothing
End Sub

--

4.异常处理

FunctionOn Error GoTo err_handle。。。Exit Functionerr_handle:MsgBox "Error!"
End Function

---

5.忽略错误

FunctionOn Error resume next。。。End Function

resume [rɪˈzjuːm]  n. 摘要;简历   v. 重新开始,恢复;取回,重新占用

---

6.其他常用1

根据一览,自动生成Sheet页_sun0322-CSDN博客

7.其他常用2:读取(多个)Excel文件

Excel VBA 循环读取一个目录下面多个文件的内容,放到另外一个文件中_sun0322-CSDN博客_vba循环读取文件夹下的文件

8. ★★★ 各种常用操作总结 ★★★

' 有时即使光标到了A1,因为滚动条的原因,显示效果并不是在最上面,此时要使用下面语句
ActiveWindow.SmallScroll Down:=-2000' 对公式进行计算
ActiveSheet.Calculate’多个Excel直接发生切换时,使用下面的语句(参数是,要切换到的Excel的名字,不含路径)
'  (对于不是通过代码打开的 Excel文件)
Windows(operateFileName).Activate' 对于代码打开的Excel,直接使用下面语句即可切换
Set workbook2 = Workbooks.Open("pathAndName", UpdateLinks:=0)
workbook2.Activate
Sheets("xxx").Select'关闭打开Excel (不保存)
workbook2.Close savechanges:=False'【sheet】复制
workbook2.Activate
Sheets("copySheet").Select
Sheets("copySheet").Copy After:workbook1.Sheets(10)'【sheet】重命名
workbook1.Activate
Sheets("copySheet (2)").Select
Sheets("copySheet (2)").Name = copySheet_比較用'【sheet】删除
Sheets("copySheet_比較用").select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete’【单元格】复制,粘贴
Range("A1:C20").Select
Selection.copyRange("E1").Select
ActiveSheet.Paste’【单元格】复制,粘贴 【公式 ⇒ 值】
Rang("A1:C20").Select
Selection.copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False’【单元格】删除指定行 (例:删除11到20行)
Rows("11:20").Select
Selection.Delete Shift:=xlUp' goto A1 ' 遍历所有Sheet页 ' 保存
Dim sh As Worksheet
For Each sh In ActiveWorkbook.sheetssh.Activesh.Range("A1").Active
Next
ActiveWorkbook.Sheets(1).active
ActiveWorkbook.Save

===

9.事件相关处理 (保存,离开单元格等操作时,触发处理)

指定单元格里面的,内容发生变化,触发事件,调用VBA代码。_sun0322的博客-CSDN博客_单元格变化触发vba

--

10.定义(调用)有返回值的函数

---

' 定义有返回值的函数public Function checkValue() As IntegerIf XXX then' 设定函数的返回值  ’× :set checkValue = 1checkValue = 1Exit FunctionEnd IfcheckValue = 0End Function' 调用函数
flg = checkValue
If flg <> 0 Then。。。
End If

---

11.VBS相关操作

VBS操作IE_sun0322的博客-CSDN博客

---

12.Variant   变量类型

Private Sub CommandButton1_Click()'Declare 【Variant】 variable
Dim areaA As Variant
'Set 【Variant variable】Value '可以使用F3中定义的变量
areaA = Range("D6:F9")'Use the 【Variant】 variable
var1 = areaA(2, 2)
var2 = areaA(4, 3)MsgBox "var1:" & var1 & Chr(10) & "var2:" & var2End Sub

--- Variant  [ˈveriənt] 变种; 变体; 变形;  

---

VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典)、读写文件相关推荐

  1. VBA中byref类型不匹配 ByRef Argument Type Mismatch错误

    VBA中子函数调用时出现如下错误:"ByRef Argument Type Mismatch",(参数类型不匹配)代码如下: Function MainFunc()Dim a, b ...

  2. java中的IO流(字节流和字符流)----读写文件数据

    前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 一.划分依据 1.按流的方向分: 输入流(读)(硬盘

  3. vba 修改access表的链接地址_VBA中常用的这7种数据类型,你都get到了吗?

    关注[新精英充电站]能力提升看得见! 重大消息 为方便读者阅读,我们将于12月23日起改为晚上九点更新. 在Access中,我们通过创建表.查询.窗体.报表.页.宏等对象,可以将数据整合在一起,快速建 ...

  4. 【剑仙教程】易语言的结构体。自定义数据类型。

    1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言 ...

  5. 易语言自定义数据类型转c,一步一步跟我学易语言之自定义数据类型

    自定义数据类型 什么是"自定义数据类型"?顾名思义,就是用户可以随时在程序中自行定义新的数据类型.自定义数据类型时需要设置数据类型的名称及其成员.数据类型成员各属性的设置方法等同于 ...

  6. C/C++:Windows编程—Windows RPC 传递自定义数据类型、自定义数据类型数组、指针数组

    前言 该篇博文不是讲Windows rpc入门的.是笔者在实际使用Windows RPC时 所遇到的问题,以及解决方法. 笔者有这样的需求,需要从RPC Server获取大量数据,而且该数据是动态分配 ...

  7. C语言之——自定义数据类型

    目录 前言:什么是自定义数据类型 ? 一,自定义数据类型之:数据类型命名 1,深入应用typedef: 二,自定义数据类型之:结构体类型命名 1,深入理解struct结构体: 三,自定义数据类型之:联 ...

  8. 剑仙java_【剑仙教程】易语言的结构体。自定义数据类型。

    1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言 ...

  9. C++与QML混合编程技术(传递自定义数据类型)

    目录 一.前言 二.C++与QML集成的基础 2.1 语言特征 2.2 可集成的前提条件 2.3 基础数据类型 2.4 自定义数据类型 三.实例讲解 3.1 QML获取C++类的自定义结构体数据 3. ...

  10. 在Excel VBA中使用字典

    序言 VBA的基础数据类型里面并没有字典类型,但字典其实在很多应用场景中都很有用,那么如何在VBA中使用字典,本文就用几个例子和大家交流探讨一下. 场景1 某个医院每天都会从不同的制造商那里进三种材料 ...

最新文章

  1. 推荐给大家看的设计书
  2. 关于yum的/repodata/repomd.xml错误
  3. JAVA构造MAP并初始化MAP
  4. labview叠加白噪声_强化学习中Ornstein-Uhlenbeck噪声是鸡肋吗?
  5. U-net结构及代码注释
  6. C++ 获取文件大小
  7. Unity官方宣传片Adam 播放地址
  8. Android与物联网设备通信-网络模型分层
  9. OFDM简介--OFDM的发送(1)
  10. STL源码剖析 阅读(一)
  11. 国内五大主流网站内容抓取工具/采集软件大盘点
  12. 动手实践感受下企业微信的网页授权登录、扫码授权登录
  13. 数据结构练习题及答案
  14. TIBCO.Rendezvous简单的发消息的过程
  15. Jupyter 福音: 官方可视化 Debug 工具!
  16. ff14服务器显示位置,ff14服务器
  17. 文件夹都具有只读属性
  18. [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画
  19. windows 10 arm架构ISO下载
  20. 2006年江苏专转本计算机试卷答案,2006年度江苏省普通高校专转本计算机试卷.doc...

热门文章

  1. python数据分析师工资待遇_预测python数据分析师的工资
  2. aix oracle集群日志,在AIX环境下实施Oracle 集群RAC的结构 文平
  3. 就这样进入了前端开发
  4. linux jetty 配置文件,linux中Jetty的安装和配置方法
  5. P4475 巧克力王国(KDTree)
  6. 9.linux ntp服务器搭建
  7. 关于英特尔物联网你不可不知的10个最新动向
  8. 提高jQuery的性能
  9. 我如何转行为程序员?心态支撑着我
  10. Python中文编码过程中遇到的一些问题