返回列表 上一主題 發帖

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

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

本帖最後由 Airman 於 2018-6-10 00:59 編輯

如有重複題之慮~請刪除前題謝謝!

測試檔 :
2018-0610-Q-1 -.rar (66.23 KB)
主檔DATA︰
目前列103程式碼為Qdown = .[R6].End(xlDown).Row
則只將R欄最後期數的當列Q : S資料貼上T4 : T6;以供T3及後續的T7公式計算。

假設列103程式碼為Qdown = .[R6].End(xlDown).Row - 1
則只將R欄最後倒數第二個期數的當列Q : S資料貼上T4 : T6;以供T3及後續的T7公式計算。

假設列103程式碼為Qdown = .[R6].End(xlDown).Row - 2
則只將R欄最後倒數第三個期數的當列Q : S資料貼上T4 : T6;以供T3及後續的T7公式計算。

其餘.....以此類推。

需求︰
想以增加一個Upcount(名稱解題者可擇宜制定)的InputBox,藉其輸入的數字(1~99),
來指定T4 : T6(含)及其往右各欄要貼上R欄最後的N個期數之各當列的Q : S資料~
EX1︰當InputBox輸入1時,則T4 : T6貼上R欄最後一個期數當列的Q : S資料~
      即等同列103程式碼為Qdown = .[R6].End(xlDown).Row的效果。

EX2︰當InputBox輸入2時,則T4 : T6貼上R欄最後倒數第二個期數當列的Q : S資料
      U4 : U6貼上R欄最後一個期數當列的Q : S資料~
      即等同列103程式碼為Qdown = .[R6].End(xlDown).Row - 1 & .[R6].End(xlDown).Row的效果。

EX3︰當InputBox輸入3時,則T4 : T6貼上R欄最後倒數第三個期數當列的Q : S資料
      U4 : U6貼上R欄最後倒數第二個期數當列的Q : S資料
      V4 : V6貼上R欄最後一個期數當列的Q : S資料~
      即等同列103程式碼為Qdown = .[R6].End(xlDown).Row - 2 & .[R6].End(xlDown).Row - 1 &
      .[R6].End(xlDown).Row的效果。

其餘.....以此類推。


請問 :
Upcount的 InputBox要怎麼設立?
列103的程式碼要如何再撰寫?

以上 敬請各位VBA高手幫忙和賜教! 謝謝!

回復 1# Airman

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

TOP

本帖最後由 Airman 於 2018-6-13 11:10 編輯

回復 2# GBKEE
謝謝您的回應^^

補充說明:
R欄的期數=B : H有顯示$R$5值的A欄期數

Qdown = .[R6].End(xlDown).Row '=到R欄的最後一個的期數

如有誤~請賜正!謝謝您^^

Qdown = .[R6].End(xlDown).Row的總表效果檔案(執行運算後)
01.png
2018-6-13 11:03

03.png
2018-6-13 11:04


其餘請見總表範例~ 49FD_最後期數(總表)_1_10_200期.rar (9.6 KB)

需求:如1#
敬請賜教!感恩^^

TOP

本帖最後由 Airman 於 2018-6-13 11:48 編輯

回復 2# GBKEE
再補充:
目前只能得~
當列103為
Qdown = .[R6].End(xlDown).Row的總表效果檔案(執行公式運算後)

Qdown = .[R6].End(xlDown).Row - 1 的總表效果檔案(執行公式運算後)
即必須分別更改程式碼後再分開執行。

需求:
希望增加 一個Upcount的InputBox,藉其輸入的數字(EX:2),
則可得如~ 49FD_最後期數(總表)_2_10_200期的總表效果檔案(執行公式運算後)。
範例檔_2.rar (36.82 KB)
請問 :
Upcount的 InputBox要怎麼設立?
列103的程式碼要如何再撰寫?

敬請您撥冗賜教! 感恩^^

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

回復 5# GBKEE

謝謝您的指導~我試試看^^

TOP

回復 5# GBKEE
效果檔個數錯誤.png
2018-6-22 05:03

可否再勞駕您撥冗賜正:
DATA!列70~列94和列97和列100程式碼的錯誤~
UpRow = 填入"1-3"
跑出下列2個錯誤的效果檔案~
T49_S欄最後n個值_10_0_200期
T49_S欄最後n個值_10_-1_200期
謝謝您^^

測試檔    T49_S欄最後n個值.rar (29.67 KB)

'UpRow..............................................................................列69
    M3 = 0                                   ‘列70
    sta = 0
For x = 1 To Len(uprowx)
    If Mid(UpRow, x, 1) = "," Then
        M3 = M3 + 1
        ReDim Preserve In3rr(M3 - 1)
        In3rr(M3 - 1) = --Mid(uprowx, sta + 1, 2)
        sta = x
        x = x + 2
    End If
    If Mid(UpRow, x, 1) = "-" Then
        For y = Mid(uprowx, sta + 1, 2) To Mid(uprowx, x + 1, 2)
            M3 = M3 + 1
            ReDim Preserve In3rr(M3 - 1)
            In3rr(M3 - 1) = y
        Next
        sta = x + 3
        x = x + 5
    End If
    If x = Len(uprowx) Then
        M3 = M3 + 1
        ReDim Preserve In3rr(M3 - 1)
        In3rr(M3 - 1) = --Mid(uprowx, sta + 1, 2)
    End If
Next                                             ‘列94
'.................................................................................
For n = 1 To M
For n3 = 1 To M3                                   ‘列97
   
    NUM = In1rr(n - 1)
    UpRow = In3rr(n3 - 1)                           ‘列100

TOP

本帖最後由 Airman 於 2018-6-23 09:02 編輯

回復 5# GBKEE

補充說明:
需求是~
EX:UpRow = 填入"1-3",可以得到T49_S欄最後n個值_10_1_200期;T49_S欄最後n個值_10_2_200期;T49_S欄最後n個值_10_3_200期等三個效果檔案。
EX:UpRow = 填入"2,5,8",可以得到T49_S欄最後n個值_10_2_200期;T49_S欄最後n個值_10_5_200期;T49_S欄最後n個值_10_8_200期等三個效果檔案。

但目前程式碼的效果是~
UpRow = 填入"1-3",會跑出T49_S欄最後n個值_10_-1_200期;T49_S欄最後n個值_10_0_200期;T49_S欄最後n個值_10_1_200期;T49_S欄最後n個值_10_2_200期;T49_S欄最後n個值_10_3_200期等五個效果檔案。

EX:UpRow = 填入"2,5,8",只跑出T49_S欄最後n個值_10_2_200期;T49_S欄最後n個值_10_5_200期等二個效果檔案。
   
程式碼錯誤的地方,敬請您賜正!謝謝您^^"

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

回復 9# GBKEE
超版大:
謝謝您的耐心回應和指導。

晚上我重新整理主檔和效果檔及文字說明後,明天再請您賜教!謝謝您^^

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題