標題:
vba 語法請教
[打印本頁]
作者:
01300607
時間:
2013-7-14 11:54
標題:
vba 語法請教
想請問為什麼這個程式碼能找出工作表裡的資料有幾列?
實在有點看不懂他的運作方式,謝謝
Function findx(ByVal objsheet As Worksheet)
x = 0
Do While True
kk = ""
For l = 1 To 10
For k = 1 To 30
If IsError(objsheet.Cells(x + l, k)) = False Then
kk = kk & objsheet.Cells(x + l, k)
End If
Next
Next
If kk = "" Then Exit Do
x = x + 1
Loop
findx = x
End Function
複製代碼
作者:
GBKEE
時間:
2013-7-14 16:52
回復
1#
01300607
'傳回最後有資料儲存格列號: 資料在 1欗-30欗,第1列開始到10列 超過第10列後續有資料的儲存格,所間隔的列數不可大於10列.
Function findx(ByVal objsheet As Worksheet) As Long '函數型態 : Long (長整數)
'ByVal 選擇性引數。表示以傳值的方式來傳遞引數。
'objsheet(參數) As(型態) Worksheet(工作表物件)
Dim x As Integer, L As Integer, k As Integer, kk As String
x = 0
Do 'While True : 這條件是預設,可不寫
kk = "" '資串歸零
For L = 1 To 10 'L: 列號 (1-10)
For k = 1 To 30 'k: 欗號 (1-30)
'objsheet.Cells(x + L, k) -> objsheet.Cells( X+列號L , 欗號 )
If IsError(objsheet.Cells(x + L, k)) = False Then '不為錯誤值:條件成立
'IsError 函數 傳回 Boolean 值,用來指出運算式是否為一個錯誤值。
kk = kk & objsheet.Cells(x + L, k) '累加[不為錯誤值存格]的內容
End If
Next
Next
'跑完 objsheet.Cells(x + 1, 1) 到 objsheet.Cells(x + 10, 30) 的範圍
If kk = "" Then Exit Do '跑完的範圍內沒有資料:離開迴圈
x = x + 1 '紀錄有資料的次數 => 最後有資料的列號列號
Loop
findx = x
End Function
複製代碼
作者:
01300607
時間:
2013-7-15 01:47
太詳細的講解了,謝謝板主
謝謝
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)