Board logo

標題: [發問] 無交集數值的工作表 [打印本頁]

作者: papaya    時間: 2021-7-17 00:06     標題: 無交集數值的工作表

[attach]33664[/attach]
Dim Number, INnum()

    If Number = "1-49" Then
        ReDim Preserve INnum(48)
        For i = 0 To 48
            INnum(i) = i + 1
        Next
    ElseIf Number = 0 Then
        ReDim Preserve INnum(6)
        ReNumber = 1
    ElseIf Number = "" Then
        ReDim Preserve INnum(0)
        ReNumber = 0

    End If
藍色部分的程式碼~只能產生如說明檔的J12:P12和R12:X12有>0個的交集數字(01~49)的工作表~
EX:Sheet1有交集數字 = 49      Sheet2有交集數字 = 1623

如果當J12:P12和R12:X12沒有任何1個交集數字時,其工作表也能產生~
EX:Sheet3和Sheet4
詳如附件。

請問:如果想不受 If Number = "1-49" Then 的影響(限制)時,藍色部分的程式碼應如何修正?
謝謝!
作者: singo1232001    時間: 2021-7-17 02:10

回復 1# papaya


    你的敘述有點模糊
大致上先討論一下
如果我沒猜錯 實際上是
if Number = "1-49"  then 寫錯 所以永遠這行不會執行
這行的意思是
如果Number 的文字 並非   ("1-49"  這個4個字元字串)  的情況下 就是false
那麼根據目前的狀況來說
表中並沒有"1-49"的國文字串

正確寫法應該要改成
if --Number >= 1 and --Number <= 49 then
這樣才是判斷 當前數字是否介於1~49的數字


    if --Number >= 1 and --Number <= 49 then
        ReDim Preserve INnum(48)
        For i = 0 To 48
            INnum(i) = i + 1
        Next
    ElseIf Number = 0 Then
        ReDim Preserve INnum(6)
        ReNumber = 1
    ElseIf Number = "" Then
        ReDim Preserve INnum(0)
        ReNumber = 0
    End If
作者: papaya    時間: 2021-7-17 03:52

本帖最後由 papaya 於 2021-7-17 04:07 編輯

回復 2# singo1232001
不好意思,沒說清楚~這是我在網上節錄的~       

   If Number = "1-49" Then
        ReDim Preserve INnum(48)
        For i = 0 To 48
            INnum(i) = i + 1
        Next
    ElseIf Number = 0 Then
        ReDim Preserve INnum(6)
        ReNumber = 1    '列8


    Else
        m1 = 0
        sta = 1
        For i = 2 To Len(Number) + 1
            If Mid(Number, i, 1) = "," Or i > Len(Number) Then
                ReDim Preserve INnum(m1)
                INnum(m1) = --Mid(Number, sta, i - sta)
                sta = i + 1
                m1 = m1 + 1
            End If
            If Mid(Number, i, 1) = "-" Then
                ReDim Preserve INnum(m1)
                INnum(m1) = --Mid(Number, sta, i - sta)
                m1 = m1 + 1
                For j = i + 1 To i + 3
                    If Mid(Number, j, 1) = "," Or j > Len(Number) Then
                    For k = Mid(Number, sta, i - sta) + 1 To Mid(Number, i + 1, j - (i + 1))
                    ReDim Preserve INnum(m1)
                    INnum(m1) = k
                    m1 = m1 + 1
                    Next
                    sta = j + 1
                    i = j
                    Exit For
                    End If
                Next


                If j > Len(Number) Then Exit For
            End If


        Next
    End If
以上的程式碼,執行一切正常~都是能產生有01~49之各=1交集號碼的工作表。

因為我想包括沒有(即=0個)交集工作表也能全部產生,所以才在9插入
    ElseIf Number = "" Then
        ReDim Preserve INnum(0)
        ReNumber = 0
只是測試後,還是只會產生1~49之各>=1交集號碼的工作表。

因此上論壇請教 : 如何修正我自行插入的程式碼 ?
謝謝!

作者: papaya    時間: 2021-7-17 07:33

本帖最後由 papaya 於 2021-7-17 07:37 編輯

回復 2# singo1232001

包括沒有(即=0個)交集修正為包括沒有(即>=0個)交集號碼

不過,仔細研究節錄的原程式碼 :

If Number = "1-49" Then
        ReDimPreserve INnum(48)
        For i = 0 To48
           INnum(i) = i + 1
        Next
是要抓有1~49中=1個交集號碼之工作表



    ElseIf Number = 0 Then
        ReDimPreserve INnum(6)
        ReNumber =1   
'列8
是要抓有指定的某7個號碼中
=1個交集號碼之工作表


目前我在列9插入的程式碼~

ElseIf Number ="" Then

        ReDim Preserve INnum(0)
        ReNumber = 0

測試後~會跑出有1~49中的>=1交集號碼之工作表


因為既是要抓交集號碼的程式碼,所以我想將插入的程式碼~

修正為要抓1~49>=0交集號碼之工作表~會不會是無解 ?


作者: singo1232001    時間: 2021-7-17 10:56

回復 4# papaya


    抱歉 不是很清楚你要的需求
我先隨便做看看
作者: papaya    時間: 2021-7-17 11:28

回復 5# singo1232001
謝謝您這麼熱心的幫忙

我列出只是設立InputBox(填入號碼)的程式碼,
所以如無法就插入列9的程式碼作修正,
這一題應是無解了~
再次謝謝您!
作者: papaya    時間: 2021-7-17 12:09

修正~
請將附件的Sheet4!X12改為06~這樣才符合說明。
謝謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)