2017年1月2日 星期一

找出每個工作表的最後一列方法


要找出每個工作表的最後一列,有很多方法
但要看工作表本身的內容

我大該列出有下列方式,可找到lastrow的方法,但每種方法在不同的工作環境中得到的結果也不盡相同
lastrow = Sheet1.UsedRange.Rows.Count
lastrow = Sheet1.[A1].End(xlDown).Row
lastrow = Sheet1.[A65536].End(xlUp).Row
lastrow = Sheet1.Cells.SpecialCells(xlCellTypeLastCell).Row
lastrow = Sheet1.Range("A1").CurrentRegion.Rows.Count
lastrow = Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Row
用法如下
Private Sub CommandButton1_Click() '
輸入按鈕
lastrow = Range("a65536").End(xlUp).Row '
有資料最後一列
Sheets("A").Cells(lastrow + 1, 1) = TextBox1.Value
Sheets("A").Cells(lastrow + 1, 2) = TextBox2.Value
Sheets("A").Cells(lastrow + 1, 3) = TextBox3.Value
End Sub

Private Sub CommandButton2_Click() '
關閉按鈕
Unload UserForm1
End Sub

原作者
DoDo (
初學者 1 )



PART2
Excel VBA
有函數可直接 "解出" "C5:H7" 的列行起點終點
例如
RRR = "C5:H7"
Range(RRR).select
xx
函數(RRR).起始列 ----> 傳回 5
xx
函數(RRR).終點列 ----> 傳回 7
xx
函數(RRR).起始行 ----> 傳回 3 (C)
xx
函數(RRR).終點行 ----> 傳回 8 (H)

Vincent (
大師 2 )的意見
起始列
Range(RRR).Row
結束列
Range(RRR).Row + Range(RRR).Rows.Count - 1
起始欄
Range(RRR).Column
結束欄
Range(RRR).Column + Range(RRR).Columns.Count - 1

MsgBox "
最下一列:" & Sheet1.UsedRange.Rows.Count & vbCrLf _
& "
最右一行:" & Sheet1.UsedRange.Columns.Count

整體有效資料最底列
ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row


某欄最底列
Cells(Rows.Count,
).End(xlUp).Row

例如:
Cells(Rows.Count, 1).End(xlUp).Row
Cells(Rows.Count, 2).End(xlUp).Row
Cells(Rows.Count, "A").End(xlUp).Row
Cells(Rows.Count, "H").End(xlUp).Row
(用數字或字母皆可)
沙拉油 ( 研究生 1 )
activecell <<
作用中的儲存格
activecell.row <<
作用中的儲存格的列號
activecell.column <<
作用中的儲存格的欄號
activecell.address <<
作用中的儲存格的位址
selection <<
選擇的儲存格
selection.areas.count <<
選擇的儲存格共有幾個沒有連續的區域
selection.address <<
選擇的儲存格的位址
selection.rows.count <<
選擇的儲存格的列數,(如果選擇了多區顯示的列數是第一區)
selection.columns.count <<
選擇的儲存格的欄數,(如果選擇了多區顯示的欄數是第一區)

沒有留言:

張貼留言