搜索
查看: 2276|回复: 4

南哥学EXCEVBA笔记:赋予某单元格值5000 VBA表达式

[复制链接]

977

主题

1093

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15934
发表于 2018-8-26 11:19:32 | 显示全部楼层 |阅读模式
Sub kjbbw()
Range("a1", "b1").Value = 5000
End Sub

Range("a1", "b1"):表示A1和B1单元格
.为链接符号
Value:值意思
= 5000:值等于5000

完整:就是赋予A1和B1单元格值为5000。

南哥学EXCEVBA笔记!

回复

使用道具 举报

977

主题

1093

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15934
 楼主| 发表于 2018-8-26 11:20:12 | 显示全部楼层
'粗體字
Range("A1").Font.Bold = true
'設定字體大小
Range("B1").Font.Size = 20
'設定欄位顏色(顏色使用RGB表示)
Range("C1").Interior.Color=RGB(0,255,0)
'設定字體顏色
Range("D1").Font.Color = RGB(255, 0, 0)
'外框設定成雙框線
Range("E1").Borders.LineStyle = xlDouble
'改變欄位寬度
Range("F1").ColumnWidth = 30
'自動調整欄寬(需整欄選取 如果沒有資料則看不出變化)
Range("G1").EntireColumn.AutoFit
'清除資料內容
Range("H1").ClearContents
'清除資料格式
Range("I1").ClearFormats
回复

使用道具 举报

977

主题

1093

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15934
 楼主| 发表于 2018-8-26 11:21:08 | 显示全部楼层
'A1的值等於B1的欄位 => A1=2
Range("A1") = Range("B1").Column
'C1的值等於第一個工作表的名字 => C1=工作表1
Range("C1") = Worksheets(1).Name
'D1的值等於E1~E5的格數 => D1=5
Range("D1") = Range("E1","E5").Count
回复

使用道具 举报

977

主题

1093

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15934
 楼主| 发表于 2018-8-26 11:23:50 | 显示全部楼层
Select、Copy & Paste
最後
介紹一下最重要的Select、Copy & Paste

Range(“A1”).Select 就很像是滑鼠在A1上點一下的動作
通常.Select之後會搭配Selection

'先點選A1 然後點選起來複製 => 完成複製A1的內容
Range("A1").Select
Selection.Copy
複製之後就要貼上,但貼上比較麻煩
貼上有兩種 一種是Paste、PasteSpecial

如果要比較直觀地重覆與Copy相同的動作
就要使用PasteSpecial

'先點選A1 然後點選起來複製 => 完成複製A1的內容
Range("A1").Select
Selection.Copy
'先點選B1~B4,點選起來後貼上 => 完成內容貼到B1~B4
Range("B1","B4").Select
Selection.PasteSpecial
.PasteSpecial 後面還能附加動作
譬如(記得空白隔開)
.PasteSpecial xlPasteFormats '只會複製格式
.PasteSpecial xlPasteValues '只會複製值
回复

使用道具 举报

977

主题

1093

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15934
 楼主| 发表于 2018-8-26 11:25:53 | 显示全部楼层
(一)、變數
變數種類有:
Integer 整數
Long 長整數
Single 浮點數
Double 浮點數(雙精度)
String 字串
Boolean 布林值(True & False)
Date 日期

其他比較複雜的還有 Variant 數值 與 Object 物件 等等

Integer整數的範圍是-32,768~32,767
Long長整數的範圍是-2147483648~2147483647
(Long是二十億,還不夠就用Variant)

宣告的方式是「Dim 變數 As 類型」

'a1是一個整數
Dim a1 as Integer
a1=100
'b1是一個字串
Dim b1 as string
b1="blabla"
而Variant可以是數字、字串、日期等等
意思是代表所有的數字與文字
而且可以容納的數字也很大,比Long還大
缺點就是沒有限制記憶體大小,跑起來可能比較慢
宣告Variant的方式就是不用宣告 XD
以下示範三種方法

'這樣宣告一個Variant變數a,且a的值是100 (意思是可以不用打宣告)
a= 100
'這樣也是宣告一個Variant變數b
Dim b
'這樣也是宣告一個Variant變數c
Dim c as Variant
Variant Data Type

The Variant data type is the data type for all variables that are not explicitly declared as some other type (using…
msdn.microsoft.com       
雖然Variant很方便,一般來說是建議少用
因為有點難控制,你也不知道你有沒有把整數存成浮點數

補充如何一次宣告多個變數

'其實就只是共用一個Dim,後面還是要重打
Dim a As integer, b As integer
'如果像下面這樣打,c變數就會變成Variant
Dim c, d As integer
Object是一個奇妙的東西
與其說是物件,倒不如說是參照

然而Obeject還有分很多種形式

'直接訂a1是一個物件(通用物件的概念)
'所以a1可以是工作表、活頁簿或欄位區域
Dim a1 as Obeject
a1 =Workbooks(1)
a1 =Range("A1,B2")
'也可以使用固定物件型態,也就是直接定義
'定義b1是一個工作表
b1 =Workbooks(1)
'定義c1是一個欄位區域
c1 =Range("A1,B2")
定義完之後
他是甚麼物件 就可以執行該物件的功能
譬如

'定義一個Range,再給予值
Dim d1 as Range
d1 = Range("A1,B2")
d1.value=100
'此時A1~B2四格的值都會變100
(二)、陣列
大家對陣列這個詞應該不陌生
但每個程式語言對陣列概念的解讀不太一樣

在VBA中陣列可以設定下界(起始點)與上界(結束點)
此外,陣列的起始點可以是負數、也可以不填

'建立一個i(5)到i(10)共六格的整數陣列
Dim i(5 to 10) As Integer
'建立一個從m(-2)到i(2)共五格的整數陣列
Dim m(-2 to 10) As Integer
'建立一個從n(0)到n(3)共四格的整數陣列(不給下界就是從0開始的意思)
Dim n(3) As Integer
'建立一個沒有限制大小的p整數陣列
Dim p() As Integer
'建立一個沒有限制大小、沒有限制內容物(使用Variant)的陣列
Dim r()
如果沒有限制陣列大小,我們又稱作動態陣列
則使用時需要多加留意
舉例而言 你需要給值,陣列元素才會出現,否則會錯誤
下面的例子會舉出動態陣列與靜態陣列的差異

'建立一個a()動態整數陣列
Dim a() as integer
'建立一個b(0)~b(5)靜態整數陣列
Dim b(5) as integer
'在陣列都還沒有給值之前,利用Msgbox讀出a(1)與b(1)
'先做a(1),會出現錯誤(因為沒有給值,該陣列元素不存在)
Msgbox(a(1))
'b(1)則會正常顯示一個空白(雖然沒有給值,但定義陣列時已經有做出元素了)
Msgbox(b(1))
再來介紹幾個常用方法
刪除及讀取陣列長度

'建一個i(3)~i(6)共四個元素的整數陣列
Dim i(3 to 6) As Integer
'清除內容
Erase i
'使a等於i陣列的上界 => a=6
a=Ubound(i)
'使b等於i陣列的下界 => b=3
b=Lbound(i)
'使c等於i陣列的長度 => c=4
c=Ubound(i)-Lbound(i)+1
當然 陣列可以是多維的
譬如 Dim m(2,2)之類的

最後 可能大家寫陣列常會碰到的問題
就是究竟可不可以用變數定義陣列長度
譬如我想要 a=10 然後 Dim i(a)
在VBA是不行直接這樣宣告的

要換一個方法 先Dim一個空陣列,再ReDim塞入變數
這個比較進階,參考官方文件

ReDim 陳述式

在Used at 程序層級用來重新配置動態陣列 procedure level to reallocate storage space for dynamic array variables. 變數 的儲存空間。 The ReDim陳述…
msdn.microsoft.com       
(三)、運算子
運算子算是比較簡單的東西
通常都是先記錄起來,打錯時可以查

算術運算:
^ 次方
* 乘法
/ 除法
\ 整數除法
Mod 餘數
+ 加法
- 減法

比較運算:
= 等於
<> 不等於
< 小於
> 大於
<= 小於或等於
>= 大於或等於

邏輯運算:
And
Or
Not
Xor

最後還有一個字串運算&
簡單來說就是合併字串時使用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

表格智创网

网站简介:表格智创网,是一家以表格设计和技能分享的专业社区,由会计帮帮网投资建设,尽专业,助提高专业技能。

表格智创网欢迎您!

联系我们

  • 工作时间:早上9:00-16:00
  • 客服电话:18668755857
  • 本站网址:www.excelwps.com
  • 淘宝店址:kjbbw.taobao.com

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

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