2014年2月21日 星期五

EXCEL VBA:儲存格



儲存格

[R1C1]格式,[A1]格式
Cells(列次,欄次).Select
Cells(2, "A").Select  '2列A欄
Cells(2, 1).Select    '2列1欄

Cells.Item(5,”C”) ‘引儲存格C5
Cells.Item(5,3) ‘引儲存格C5


'作用儲存格:ActiveCell


ActiveCell.Address
ActiveCell.Column
ActiveCell.Row
ActiveCell.Characters(m, n).Delete   '從第m個字元起刪除n個字元

'選取、激活:



Range(ActiveCell, "D9").Select      ActiveCellB9的矩形區域

[B3].Select

ActiveCell.Range("B3:D5").Select    ActiveCell(向右2B3B】,向下3B33】)選取與「B3:D5」相同形狀的矩形區域
ActiveCell.CurrentRegion.Select
或Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select
'選擇當前活動儲存格所包含的範圍,上下左右無空行
Cells.Select ‘選定當前工作表的所有儲存格
Range("A1").Select
Selection.Range(“E4”).Select ‘激活當前活動儲存格下方3行,向右4列的儲存格
Range(“A1”).Offset(RowOffset:=4,ColumnOffset:=5)
Range(“A1”).Offset(4,5) ‘指定儲存格F5



選取單格、單一區域:


Cells(3, 2).Select                       選取32行的儲存格(單格)

Range("B2").Select                 選取目前工作表的B2儲存格(單格)

Range("B2:C5").Select      選取目前工作表的B2C5的矩形區域
Range(Cells(2, 2), Cells(10, 6)).Select 



選取所有的欄、列、工作表


Range("B:B").Select                 選取B欄全部

Range("B:D").Select                 選取BD欄全部

Range("2:2").Select                 選取2列全部

Range("2:7").Select                 選取27列全部

Columns("B:B").Select           選取B欄全部   

Columns("A").Select              選取A欄全部

Columns(3).Select               選取第3欄全部

Columns.Select                  選取所有的欄

Rows(2).Select

Rows.Select                      選取所有的列

Range("範圍名稱").Select

Selection.Offset(3, 1).Select        單格位移:下移3列,右移1行。

Cells.Select                       

選取不相鄰的範圍


l          Dim NewRange As Range
Set NewRange = Union(Range(Cells(1, 1), Cells(2, 2)), Range(Cells(5, 5), Cells(6, 6)))
NewRange.Select

l          Range("B2:C5,D6:E9").Select   選取目前工作表的B2C5D6E9的矩形區域



1個工作表的某個區域全填入5,其中Sheet1不是工作表名稱,只是代表第1個工作表與Sheets(1)相同。

Sheet1.Range(Sheet1.Cells(2, 2), Sheet1.Cells(5, 5)).Value = 5

'合併儲存格、解除合併儲存格
Selection.Merge
Selection.UnMerge


複製貼上:

Range(“A1”).Copy Range(“B1”) '複製儲存格A1,粘貼到儲存格B1中
Range(“A1:D8”).Copy Range(“F1”) '將儲存格區域複製到儲存格F1開始的區域中
Range(“A1:D8”).Cut Range(“F1”) '剪切儲存格區域A1至D8,複製到儲存格F1開始的區域中
Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”) '複製包含A1的儲存格區域到工作表2中以A1起始的儲存格區域中
註:CurrentRegion屬性等價於定位命令,由一個矩形儲存格塊組成,周圍是一個或多個空行或列

ActiveWindow.RangeSelection.Value=XX '將值XX輸入到所選儲存格區域中

清除:

Range(“A1”).ClearContents '清除活動工作表上儲存格A1中的內容

Selection.ClearContents '清除選定區域內容
Selection.Clear 
'清除選定區域內容與格式

 Range(“A1:D4”).ClearContents '徹底清除A1至D4儲存格區域的內容
Range(“A1:D4”).Clear '徹底清除A1至D4儲存格區域的內容與格式
 

Cells.Clear '清除工作表中所有儲存格的內容與格式
Cells.ClearContents  '清除工作表中所有儲存格的內容

移動:

ActiveCell.Offset(m,0).Select '活動儲存格下移m列
ActiveCell.Offset(m).Select '活動儲存格下移m列

ActiveCell.Offset(0,n).Select '活動儲存格右移n欄
ActiveCell.Offset(,n).Select '活動儲存格右移n欄

Range(“A1”).Offset(ColumnOffset:=n)或Range(“A1”).Offset(,n) ‘偏移n欄
Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) ‘向上偏移一列



取得目前情況:
cells.count ‘返回當前工作表的儲存格數
ActiveWindow.RangeSelection.Count '活動窗口中選擇的儲存格數

Selection.Count '當前選中區域的儲存格數
Selection.Columns.Count ‘當前選中的儲存格區域中的列數
Selection.Rows.Count ‘當前選中的儲存格區域中的行數
Selection.Areas.Count ‘選中的儲存格區域所包含的區域數


TextColor=Range(“A1”).Font.ColorIndex ‘檢查儲存格A1的文本顏色並返回顏色索引
Range(“A1”).Interior.ColorIndex ‘獲取儲存格A1背景色


設定:
Rows.RowHeight 指定範圍內的所有列高
Columns.ColumnsWidth:指定範圍內的所欄寬
expression.NumberFormatLocal 以本地的數字格式
Range.CurrentRegion 目前區域是指以任意空白列及空白欄的組合為邊界的範圍

區域的操作:
Range(“B3”).Resize(RowSize:=11,ColumnSize:=3)
Rnage(“B3”).Resize(11,3) ‘創建B3:D13區域
Range(“Data”).Resize(,2) ‘將Data區域擴充2列
Union(Range(“Data1”),Range(“Data2”)) ‘將Data1和Data2區域的聯集
Intersect(Range(“Data1”),Range(“Data2”)) ‘返回Data1和Data2區域的交集區域
Range(“Data”).Count ‘儲存格區域Data中的儲存格數
Range(“Data”).Columns.Count ‘儲存格區域Data中的列數
Range(“Data”).Rows.Count ‘儲存格區域Data中的行數
ActiveSheet.UsedRange.Row  ‘取得儲存格區域中使用的第一行的行號
Rng.Column ‘獲取儲存格區域Rng左上角儲存格所在列編號


名稱
Range(“A1:C3”).Name=“computer” ‘命名A1:C3區域為computer
或Range(“D1:E6”).Name=“Sheet1!book” ‘命名局部變量,即Sheet1上區域D1:E6為book
或 Names(“computer”).Name=“robot” ‘將區域computer重命名為robot
Names(“book”).Delete ‘刪除名稱
Names.Add Name:=“ContentList”,_
RefersTo:=“=OFFSET(Sheet1!A2,0,0,COUNTA(Sheet2!$A:$A))” ‘動態命名列
Names.Add Name:=“Company”,RefersTo:=“CompanyCar” ‘命名字符串CompanyCar
Names.Add Name:=“Total”,RefersTo:=123456 ‘將數字123456命名為Total。注意數字不能加引號,否則就是命名字符串了。
Names.Add Name:=“MyArray”,RefersTo:=ArrayNum ‘將數組ArrayNum命名為MyArray。
Names.Add Name:=“ProduceNum”,RefersTo:=“=$B$1”,Visible:=False ‘將名稱隱藏
ActiveWorkbook.Names(“Com”).Name ‘返回名稱字符串



範例:
Worksheets("Sheet1").Activate

expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo) 以參照的方式
RowAbsolute 為True,則用列的絕對位址
ColumnAbsolute 為True,則用欄的絕對位址
ReferenceStyle 預設值為xlA1,如為xlR1C1則為R1C1的表達方式
expression.count 傳回範圍的數量(可以是欄數、列數或儲存格數量)
expression.Item(RowIndex, ColumnIndex) 代表相對於指定之範圍某個位移距離的範圍。
expression.value 傳回或設定物件的值
expression.Formula 傳回或設定物件的公式,代表 A1 樣式註解以及巨集語言中的物件公式。
範例:Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10"
expression.FormulaR1C1 傳回或設定物件的公式,並以巨集語言中的 R1C1 樣式標記法表示
範例:Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=SQRT(R1C1)"
expression.Text 傳回或設定物件的文字

範例:

   Set c = Worksheets("Sheet1").Range("B14")

   c.Value = 1198.3

   c.NumberFormat = "$#,##0_);($#,##0)"

   MsgBox c.Value

   MsgBox c.Text

3 則留言:

  1. 我想要把資料複製到目前所在的儲存格上,請問要如何寫 ((醬為甚麼不行Range("A2:b2").Copy Range(ActiveCell)

    回覆刪除
  2. Sub 投信買賣公式()
    Sheets("投信彙整").Select
    AA = 10
    BB1 = 6 '=F
    BB2 = 10 '=J
    XX = 1
    Do While XX <= 3
    Cells(6, AA) = "=VLOOKUP($A6,法人買賣! R1C" & BB1 & ":R2000C" & BB2 & ",3,FALSE)"
    ' 原來在工作表上的公式 =VLOOKUP($A6,法人買賣!F1:J2000,3,FALSE)
    AA = AA + 1
    B1 = B1 + 5
    B2 = B2 + 5
    XX = XX + 1
    Loop
    End Sub
    請教先進 以上這段巨集哪裡錯誤了 執行到 Cells(6, AA) = "=VLOOKUP($A6,法人買賣! R1C" & BB1 & ":R2000C" & BB2 & ",3,FALSE)" 這一句時,一直出現錯誤,而中斷執行。

    麻煩賜教 感謝您

    回覆刪除

關節卡卡或彈響

關節間產生的潤滑液少,關節摩擦的損耗 髖關節彈響。 一般有兩種情況,第一種是關節外彈響較常見。 發生的主要原因是髂脛束的後緣或臀大肌肌腱部的前緣增厚, 在髖關節作屈曲、內收、內旋活動時,增厚的組織在大粗隆部前後滑動而發出彈響, 同時可見到和摸到一條粗而緊的縴維帶在...