返回列表 上一主題 發帖

[發問] 如何設立可指定計算期數範圍的InputBox?

回復 1# Airman

Qdown = .[R6].End(xlDown).Row 你的檔案上會是到最後一列 (沒有欄最後期數)
請再修正一下
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2018-6-14 07:56 編輯

回復 4# Airman
可看Excel的說明  InputBox
有 InputBox 函數, InputBox方法可運用,自我練習看看
  1. '**Rows.Count -> 工作表的總行數(各版本總行數不一樣)**
  2.             If .[R6].End(xlDown).Row = Rows.Count Then
  3.                 MsgBox "沒有期數": Exit Sub
  4.             Else
  5.                 Qdown = .[R6].End(xlDown)
  6.             End If
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 8# Airman
NUM = "10" ' InputBox("請選擇公式的起迄序號", "序號10-99")  **序號10-99 是指哪裡**
Nrange = "200" ' InputBox("請輸入運算的起迄期數", "輸入期數")  ** '起迄期數在哪裡**
UpRow = "1-3" ' InputBox("請選擇S欄最後n個值", "輸入1個-239個") ** 有看懂了**
要抓Data的哪些資料到
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\T49_S欄最後n個值_" & NUM & "_" & UpRow & "_" & mthcount & "期.xls"
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2018-6-25 15:08 編輯

回復 11# Airman
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Dim UpRow As Variant, E As Variant, i As Integer, Msg As String
  4.     'NUM = "10" ' InputBox("請選擇公式的起迄序號", "序號10-99")
  5.     'Nrange = "200" ' InputBox("請輸入運算的起迄期數", "輸入期數")
  6.     UpRow = InputBox("請選擇S欄最後n個值", "輸入1個-239個", "5,8,9")
  7.     Msg = "選擇S欄最後n個值,格式 數值 有誤"
  8.     'Ttim = Timer
  9.     '[B2] = ""
  10.     '[B3] = ""
  11.     '[F2] = ""
  12.     'numx = NUM
  13.     If InStr(UpRow, "-") Then
  14.         For Each E In Split(UpRow, "-")
  15.             If Not IsNumeric(E) Or i > E Then MsgBox Msg: End  '檢查是否為數字或小於上一個數字
  16.             i = E
  17.         Next
  18.         E = Split(UpRow, "-")(0)   '第一個數字
  19.         ReDim UpRow(E To Split(UpRow, "-")(UBound(Split(UpRow, "-")))) '重置陣列數的大小
  20.         'ReDim 陳述式 在程序層次中用來重新配置動態陣列變數的儲存空間。
  21.         'Split 函數 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
  22.         'UBound 函數 傳回 Long值,表示指定陣列某維最大可使用的陣列索引。
  23.         UpRow(E) = E
  24.         For i = UpRow(E) + 1 To UBound(UpRow)
  25.             UpRow(i) = UpRow(i - 1) + 1       '依序將 UpRow 如  5-9 轉為陣列
  26.         Next
  27.     ElseIf InStr(UpRow, ",") Then
  28.         For Each E In Split(UpRow, ",")
  29.             If Not IsNumeric(E) Or i > E Then MsgBox Msg: End      '檢查是否為數字或小於上一個數字
  30.             i = E
  31.         Next
  32.         UpRow = Split(UpRow, ",")  '將 UpRow 如  5,9,11 轉為陣列
  33.     ElseIf IsNumeric(UpRow) Then
  34.         UpRow = Array(UpRow)
  35.     Else
  36.         MsgBox Msg: End
  37.     End If
  38.     For Each E In UpRow
  39.     '*** 做你想做的的事*****
  40.     '*** 也可呼叫 程式 (你想做的的事)
  41.     Next
  42.    
  43. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 道德是提昇自我的明燈,不該是呵斥別人的鞭子。
返回列表 上一主題