- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
12#
發表於 2018-6-25 07:40
| 只看該作者
本帖最後由 GBKEE 於 2018-6-25 15:08 編輯
回復 11# Airman - Option Explicit
- Private Sub CommandButton1_Click()
- Dim UpRow As Variant, E As Variant, i As Integer, Msg As String
- 'NUM = "10" ' InputBox("請選擇公式的起迄序號", "序號10-99")
- 'Nrange = "200" ' InputBox("請輸入運算的起迄期數", "輸入期數")
- UpRow = InputBox("請選擇S欄最後n個值", "輸入1個-239個", "5,8,9")
- Msg = "選擇S欄最後n個值,格式 數值 有誤"
- 'Ttim = Timer
- '[B2] = ""
- '[B3] = ""
- '[F2] = ""
- 'numx = NUM
- If InStr(UpRow, "-") Then
- For Each E In Split(UpRow, "-")
- If Not IsNumeric(E) Or i > E Then MsgBox Msg: End '檢查是否為數字或小於上一個數字
- i = E
- Next
- E = Split(UpRow, "-")(0) '第一個數字
- ReDim UpRow(E To Split(UpRow, "-")(UBound(Split(UpRow, "-")))) '重置陣列數的大小
- 'ReDim 陳述式 在程序層次中用來重新配置動態陣列變數的儲存空間。
- 'Split 函數 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
- 'UBound 函數 傳回 Long值,表示指定陣列某維最大可使用的陣列索引。
- UpRow(E) = E
- For i = UpRow(E) + 1 To UBound(UpRow)
- UpRow(i) = UpRow(i - 1) + 1 '依序將 UpRow 如 5-9 轉為陣列
- Next
- ElseIf InStr(UpRow, ",") Then
- For Each E In Split(UpRow, ",")
- If Not IsNumeric(E) Or i > E Then MsgBox Msg: End '檢查是否為數字或小於上一個數字
- i = E
- Next
- UpRow = Split(UpRow, ",") '將 UpRow 如 5,9,11 轉為陣列
- ElseIf IsNumeric(UpRow) Then
- UpRow = Array(UpRow)
- Else
- MsgBox Msg: End
- End If
- For Each E In UpRow
- '*** 做你想做的的事*****
- '*** 也可呼叫 程式 (你想做的的事)
- Next
-
- End Sub
複製代碼 |
|