VBA与Excel(持续更新)

Cells

行列从1开始

Cells(1,1)=123

Cells(1,”A”)=123

Range

Range(“B2”)

Range(“B3:F4”)

Range(“B3:F4,B2,D7:E8”)

Range(Cells(r1,c1), Cells(r2,c2))

 

 

VBA调用Excel函数

Cells(2, 2) = WorksheetFunction.Sum(Range(“A1:A10”))

 

Excel调用VBA自定义函数

模块中定义函数,即可在Excel中调用自定义函数

Public Function Add(x As Integer, y As Integer)

Add = x + y

End Function

前端之HTML(持续更新)

网页结构

<html lang=”en” xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<meta charset=”utf-8″ />

<title>页面标题</title>

</head>

<body>

 

</body>

</html>

 

mate

<html lang=”en” xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<meta charset=”utf-8″ />

<meta name=”keywords” content=”写给搜索引擎的关键信息描述” />

<meta http-equiv=”content-type”  content=”text/html” charset=”utf-8″/>

<title>页面标题</title>

</head>

<body>

 

</body>

</html>

 

引用

<html lang=”en” xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<meta charset=”utf-8″ />

<meta name=”keywords” content=”写给搜索引擎的关键信息描述” />

<meta http-equiv=”content-type”  content=”text/html” charset=”utf-8″/>

<title>页面标题</title>

<style type=”text/css”></style>

<script type=”text/javascript”></script>

<link href=”Css文件名” rel=”stylesheet” />

</head>

<body>

 

</body>

</html>

 

注释

<html lang=”en” xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<meta charset=”utf-8″ />

<meta name=”keywords” content=”写给搜索引擎的关键信息描述” />

<meta http-equiv=”content-type”  content=”text/html” charset=”utf-8″/>

<title>页面标题</title>

<style type=”text/css”></style>

<script type=”text/javascript”></script>

<link href=”Css文件名” rel=”stylesheet” />

</head>

<body>

<!–注释–>

</body>

</html>

 

标题H

<h1>标题1</h1>

 

段落

<p>段落内容</p>

 

换行

换行<br />

加粗

<strong>加粗</strong>

斜体

<em>斜体</em>

上下标签

a<sup>2</sup>H<sub>2</sub>

删除标签

<s>删除标签</s>

水平线

<hr />

div标签

<div></div>

特殊符号

&nbsp

有序列表

    <ol>

<li>项目1</li>

<li>项目2</li>

<li>项目3</li>

</ol>

 

无序列表

    <ul>

<li>项目1</li>

<li>项目2</li>

<li>项目3</li>

</ul>

表单

<form action=”x.php” method=”get或post” name=”表单”><input type=”text” value=”” />
<input type=”password” />
<input type=”button” />
<input type=”reset” />
<input type=”radio” /></form>多媒体
<embed src=”” width=”300″ height=”150″></embed>

框架
<iframe src=””> </iframe>

浮动
#s3 {
float:right;
}
p{
clear:both;
}

固定定位
span {
position: fixed;
bottom: 10px;
}

相对定位
span {
position: relative;
bottom: 10px;
}

绝对定位
span {
position: absolute;
bottom: 10px;
}
表单

<form action=”x.php” method=”get或post” name=”表单”><input type=”text” value=”” />
<input type=”password” />
<input type=”button” />
<input type=”reset” />
<input type=”radio” /></form>多媒体
<embed src=”” width=”300″ height=”150″ data-mce-fragment=”1″></embed>

框架
<iframe src=”” data-mce-fragment=”1″> </iframe>

浮动
#s3 {
float:right;
}
p{
clear:both;
}

固定定位
span {
position: fixed;
bottom: 10px;
}

相对定位
span {
position: relative;
bottom: 10px;
}

绝对定位
span {
position: absolute;
bottom: 10px;
}

前端之JavaScript(持续更新)2

变量与常量 var a = 123; var PI = 3.14; 数据类型 数字 字符串 布尔值 未定义 空值 数组 对象 算数运算符 + – * / % ++ — 赋值运算符 = 比较运算符 < > >= <= == != 逻辑运算符 && || ! 条件运算符 ?: 字符串转数字 Number() parseInt() parseFloat() 数字转字符串 toString() 选择语句 if if else if else if else switch() { case 值1: ; break; …… default: } 循环 while do while for 函数 function add(a,b) { alert(a+b); } 字符串对象 数组对象 var ar = new Array(“元素1″,”元素2″,”元素3”); 时间对象 var d = new Date() math对象 Math.random() DOM对象 var obj = document.getElementById(“son1″) obj.style.color=”red” var obj1 = document.querySelector(“.son3”); obj1.style.color = “blue”; document.getElementById(); document.getElemetsByTagName(); document.getElementsByClassName(); document.querySelector(); document.querySelectorAll(); document.title; document.body; 创建元素 var oDiv = document.getElementById(“content”); var oStrong = document.createElement(“strong”); var oTxt = document.createTextNode(“lyxxw”); oStrong.appendChild(oTxt); oDiv.appendChild(oStrong);

前端之CSS(持续更新)

/*注释*/

元素选择器
div {color:red;}

id选择器
#idnum{color:red;}

class选择器
.classstr{color:red;}

子元素选择器
.classstr #p{color:red;}
.classstr p{color:yellowgreen;}

相邻元素选择器
.classstr+div {color:yellowgreen;}

群组选择器
.classstr,div {color:yellowgreen;}

字体样式
.classstr{
font-family:宋体;
font-size:20px;
color:red;
font-weight:400;
font-style:italic;
}

文本样式
#idnum{
text-decoration:none;
text-indent:28px;
text-align:center;
}

边框样式
.classstr1{
border-width:1px;
border-style:solid;
border-color:red;
}

背景样式
.classstr1{
background-color:aliceblue;
}

超链接样式
a{text-decoration:none;}/*留此样式1*/
a:link { color:white;}
a:visited{color:purple}
a:hover{color:yellow;text-decoration:underline;}/*留此样式2*/
a:active{color:red;}

列表样式
.classstr{
list-style-type:none;
}

ST结构化文本语言与示例(持续更新20221117)

基本数据类型

类型名称

类型标识符

数据下限

数据上限

存储空间

布尔型

BOOL

0

1

1bit

整型

字节型

BYTE

0

255

1byte

字型

WORD

0

65535

2byte

双字型

DWORD

0

4294967295

4byte

短整型

SINT

-128

127

1byte

无符号短整型

USINT

0

255

1byte

整型

INT

-32768

32767

2byte

无符号整型

UINT

0

65535

2byte

长整型

DINT

-2147483648

2147483647

4byte

无符号长整型

UDINT

0

4294967295

4byte

实数型

REAL

-3.402823E+38

3.402823E+38

4byte

字符串行

STRING

默认 80 个字符,最大255个字符,第一个字节存储字符串长度。

256byte

时间型

时间型

TIME

TIME 表示一个时间值, 单位为毫秒, 初始值为 0。

4byte

时刻型

TOD

TOD 表示当天的时刻, 单位为毫 秒, 初始值为凌晨 0 点 0 分。

4byte

日期型

DATE

DATE 表示当前日期, 单位为秒,初始值是 1970 年 1 月 1 日。

4byte

日期时刻型

DT

DT 表示当前日期和时刻, 单位为秒, 初始值是 1970 年 1 月 1 日凌晨 0 点 0 分。

4byte

自定义数据类型

数组定义: <数组名>:ARRAY [<L1>..<M1>,<L2>..<M2>,<L3>..<M3>] OF <基本数据类型>一维数组 A1: ARRAY[0..9] OF BOOL; 二维数组 A2: ARRAY[0..9, 0..9] OF REAL; 三维数组 A3: ARRAY[0..9, 0..9, 0..9] OF INT; 枚举: TYPE<标识符>:(<Enum_1>,<Enum_2>,…,<Enum_3>); END_TYPE 定义举例 TYPE Color : ( Red := 0, Green, Yellow ); END_TYPE 结构: TYPE <结构名>: STRUCT <变量声明 1> <变量声明 2> … <变 量声明 n> END_STRUCT END_TYPE 定义举例 TYPE Motor : STRUCT V:REAL; A:REAL; Hz:REAL; END_STRUCT END_TYPE 指针: <指针名>: POINTER TO <数据类型或功能块类型> 定义举例 Pt:POINTER TO INT; Int1:INT; Int2:INT; Pt:=ADR(Int1);(*取地址*) Int2:=Pt^;(*取值*)

ST结构化文本语言与示例(持续更新)

进制

进制 表示 备注
二进制 2#00110011
八进制 8#17
十进制 10#522或522
十六进制 16#AF10

数据类型

类型名称 类型标识符 数据下限 数据上限 存储空间
布尔型 BOOL 0 1 1bit
整型 字节型 BYTE 0 255 1byte
字型 WORD 0 65535 2byte
双字型 DWORD 0 4294967295 4byte
短整型 SINT -128 127 1byte
无符号短整型 USINT 0 255 1byte
整型 INT -32768 32767 2byte
无符号整型 UINT 0 65535 2byte
长整型 DINT -2147483648 2147483647 4byte
无符号长整型 UDINT 0 4294967295 4byte
实数型 REAL -3.402823E+38 3.402823E+38 4byte
字符串行 STRING 默认80个字符,最大255个字符,第一个字节存储字符串长度。 256byte
时间型 时间型 TIME TIME表示一个时间值,单位为毫秒,初始值为0。 4byte
时刻型 TOD TOD表示当天的时刻,单位为毫秒,初始值为凌晨0点0分。 4byte
日期型 DATE DATE表示当前日期,单位为秒,初始值是1970年1月1日。 4byte
日期时刻型 DT DT 表示当前日期和时刻,单位为秒,初始值是1970年1月1日凌晨0点0分。 4byte

转义符号

转义符号 意义 备注
$$ 美元
$L 换行
$N 新行
$R 回车符
$T 制表符
$P 换页

变量属性

属性类型 意义 备注
VAR 局部变量 在PRG和FB中有记忆,在FC和Method中没有记忆
VAR_GLOBAL 全局变量
VAR_RETAIN 掉电保持型变量
VAR_CONSTANT 常量
VAR_IN 输入变量
VAR_OUT 输出变量
VAR_IN_OUT 输入输出变量
VAR_TEMP 临时变量 在所有程序段中都没有记忆,每次调用都会初始化
VAR_STAT 静态变量 在所有程序段中都有记忆

自定义数据类型

数组定义:
<数组名>:ARRAY [<L1>..<M1>,<L2>..<M2>,<L3>..<M3>] OF <基本数据类型>
一维数组 A1: ARRAY[0..9] OF BOOL;
二维数组 A2: ARRAY[0..9, 0..9] OF REAL; 三维数组 A3: ARRAY[0..9, 0..9, 0..9] OF INT; 枚举: TYPE<标识符>:(<Enum_1>,<Enum_2>,…,<Enum_3>); END_TYPE 定义举例 TYPE Color : ( Red := 0, Green, Yellow ); END_TYPE 结构: TYPE <结构名>: STRUCT <变量声明1> <变量声明2> <变量声明n> END_STRUCT END_TYPE 定义举例 TYPE Motor : STRUCT V:REAL; A:REAL; Hz:REAL; END_STRUCT END_TYPE 指针: <指针名>: POINTER TO <数据类型或功能块类型>

语句

IF 表达式1 THEN 语句块1; ELSIF 表达式2 THEN 语句块2; …… ELSE 语句块3 END_IF; CASE 表达式 OF 值1:语句块1; 值2:语句块2; …… ELSE:语句块; END_CASE; WHILE 表达式 DO 语句块; END_WHILE; FOR 控制变量:=初始值 TO 结束值 BY 增量值 DO 语句块; END_FOR

常用指令

VAR intVar1: INT; intVar2: INT; intVar3: INT; boolVar1: BOOL; VarOut: INT; VarIn: INT; wordVar1: WORD; wordVar2: WORD; wordVar3: WORD; realVar1: REAL; realVar2: REAL; intArr1: ARRAY[0..9] OF INT; dintVarAddress1:POINTER TO INT; uintVar1: UINT; R_TRIG1: R_TRIG; F_TRIG1: F_TRIG; CTUD1: CTUD; CTD1: CTD; CTU1: CTU; TON1: TON; TOF1: TOF; END_VAR //赋值运算符 intVar1:=123; //算数运算符 intVar1:=intVar2+123; intVar1:=intVar2-123; intVar1:=intVar2*123; intVar1:=intVar2/123; intVar1:=intVar2 MOD 123; (*取余*) //选择指令 intVar3:=SEL(boolVar1,intVar1,intVar2);(*二选一*) intVar1:=MUX(intVar2,-123,456,789);(*多选一*) intVar3:=MIN(intVar1,intVar2); intVar3:=MAX(intVar1,intVar2); VarOut:=LIMIT(intVar1,VarIn,intVar2);(*极限值指令*) //比较指令 boolVar1:=intVar1<intVar2; boolVar1:=intVar1<=intVar2; boolVar1:=intVar1>intVar2; boolVar1:=intVar1>=intVar2; boolVar1:=intVar1<>intVar2; boolVar1:=intVar1=intVar2; //移位指令 wordVar1:=SHR(2#10011001,2); wordVar1:=ROR(2#10011001,2); wordVar1:=SHL(2#10011001,2); wordVar1:=ROL(2#10011001,2); //逻辑运算指令 wordVar1:=NOT wordVar2; wordVar1:=wordVar2 AND wordVar3; wordVar1:=wordVar2 OR wordVar3; wordVar1:=wordVar2 XOR wordVar3; //初等数学运算指令 realVar1:=SQRT(realVar2); realVar1:=ABS(realVar2); realVar1:=EXP(realVar2); realVar1:=LN(realVar2); realVar1:=LOG(realVar2); realVar1:=EXPT(realVar2,5); realVar1:=SIN(realVar2); realVar1:=ASIN(realVar2); realVar1:=COS(realVar2); realVar1:=ACOS(realVar2); realVar1:=TAN(realVar2); realVar1:=ATAN(realVar2); //地址运算指令 uintVar1:=SIZEOF(intArr1);(*获取变量所占字节数*) dintVarAddress1:=ADR(intVar1);(*获取变量地址*) intVar2:=dintVarAddress1^;(*获取指针变量所指向的值*) //数据转换指令 _TO_ intVar1:=BOOL_TO_INT(boolVar1); //计数器 CTUD1(CU:= , CD:= , RESET:= , LOAD:= , PV:= ,QU=> , QD=> ,CV=> ); CTD1(CD:= , LOAD:= ,PV:= , Q=> , CV=> ); CTU1(CU:= , RESET:= , PV:= , Q=> , CV=> ); //定时器 TON1(IN:= , PT:= , Q=> , ET=> ); TOF1(IN:= , PT:= , Q=> , ET=> ); //触发指令 R_TRIG1(CLK:=boolVar1 , Q=> ); F_TRIG1(CLK:=boolVar1 , Q=> );

示例 上升沿下降沿触发指令

FUNCTION_BLOCK R_F_TRIG VAR_INPUT CLK: BOOL; END_VAR VAR_OUTPUT QR: BOOL; QF: BOOL; END_VAR VAR_STAT TEMP: BOOL := FALSE; END_VAR QR:=CLK AND (NOT TEMP); QF:=(NOT CLK) AND TEMP; TEMP:=CLK; PROGRAM MAIN VAR R_F_TRIG_0: R_F_TRIG; C: BOOL; ADD1: INT; ADD2: INT; END_VAR R_F_TRIG_0(CLK:=C , QR=> , QF=> ); IF R_F_TRIG_0.QR THEN ADD1:=ADD1+1; END_IF IF R_F_TRIG_0.QF THEN ADD2:=ADD2+1; END_IF

C#使用手册(持续更新)

常用数据类型 获取精确到毫秒的时间 string s= string.Format(“{0:yyyy/MM/dd HH:mm:ss.fff}”,DateTime.Now); 运算符 算数运算符 + – * / % ++ — 关系运算符 == != > < >= <= 逻辑运算符 && || ! 位运算符 & | ^ ~ << >> 赋值运算符 = += -= *= /= %= <<= >>= &= ^= |= 其它运算符 sizeof() typeof() &取变量地址 *变量的指针 ?:条件表达式 is判断对象是否为某一类型 as强制转换,即使转换失败也不会抛出异常 数据类型转换 隐式转换 系统自动执行,允许范围小的数向范围大的数转换。 int x = 123; float y = x; 显式转换(强制转换) decimal x = 123; float y =(float) x; 特定方法 Parse()方法 ToString()方法 int x = int.Parse(“123”); string s = x.ToString(); Conver类 int x = Convert.ToInt32(“123”); string s = Convert.ToString(123); 程序执行计时功能 using System.Diagnostics; Stopwatch stopwatch = new Stopwatch(); stopwatch.Restart(); Thread.Sleep(1234); stopwatch.Stop(); this.label1.Text = stopwatch.ElapsedMilliseconds.ToString(); 匿名方法与Lambda表达式 namespace ConsoleApp2 { class Program { delegate void DelegateMethod(string str); static void PrintStr(string str) { Console.WriteLine(str); } static void Main(string[] args) { DelegateMethod dm = PrintStr; dm(“Hello World!”); Console.Read(); } } } 采用匿名函数的写法 namespace ConsoleApp2 { class Program { delegate void DelegateMethod(string str); static void Main(string[] args) { DelegateMethod dm = delegate (string str) { Console.WriteLine(str); }; dm(“Hello World!”); Console.Read(); } } } 后续开始使用lambda表达式取代了匿名函数,而且应用范围更广。 Lambada表达式 (参数)=>{表达式} 0或多个参数()不能必须保留,一个参数()可以不写; 一条语句{}可以不写,否则必须保留; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Action AM = (str) => { Console.WriteLine(str); }; AM(“Hello World!”); Func<int, int, double> FM = (x, y) => { return  x + y; }; Console.WriteLine(FM(123,456)); Console.Read(); } } } 异步编程的示例 namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //async/await关键词调用或者调用此方法 private void button1_Click(object sender, EventArgs e) { callAddAysnc(); } private async void callAddAysnc() { string r = await addAysnc(123, 456); MessageBox.Show(r); } //方法封装成任务 private Task addAysnc(int a, int b) { return Task.Run(() => { return add(a, b); }); } //耗时方法 private string add(int a, int b) { Thread.Sleep(10000); return (a + b).ToString(); } } }