iT邦幫忙

0

儲存格導回VBA並以代數方式執行程序

  • 分享至 

  • xImage

之前請海大解答的程式,也還蠻常用的,但每次要改也是蠻麻煩的,想說把有甚麼語法能將指定儲存格導回到VBA中作代數值使用,1~5該如何改寫X.M.N.R,才能讓下方能執行
1.Dim arrCode(X)
2.X = Worksheets("Sheet1").Range("F1").Value
3.M = Worksheets("Sheet1").Range("F2").Value
4.N = Worksheets("Sheet1").Range("F3").Value
5.R = Worksheets("Sheet1").Range("F4").Value


Public Sub 啟動表單()
    startRow = 3 
    startCol = 3 
    nIdx = 0
    For nI = 1 To M
        If nI = M Then nLoop = R Else nLoop = N
        For nJ = 1 To nLoop
            nIdx = nIdx + 1
            arrCode(nIdx) = Format(nI, "00#") & Format(nJ, "00#")
        Next nJ
    Next nI
    For nI = startRow To startRow + X - 1
        scode = Cells(nI, startCol)
        If (scode <> "") Then
            Call useCode(scode)
        End If
    Next nI
    For nI = startRow To startRow + X - 1
        scode = Cells(nI, startCol)
        If (scode = "") Then
            Cells(nI, startCol) = getCode
        End If
    Next nI
End Sub
Function useCode(ByVal code As String)
    For nI = 1 To X
        If (arrCode(nI) = code) Then
            arrCode(nI) = ""
            Exit For
        End If
    Next nI
End Function
Function getCode() As String
    For nI = 1 To X
        If (arrCode(nI) <> "") Then
            getCode = "'" & arrCode(nI)
            arrCode(nI) = ""
            Exit For
        End If
    Next nI
End Function
看不懂
peterzxcv iT邦新手 5 級 ‧ 2020-05-19 08:35:53 檢舉
簡單的說明就是希望把程式內的數值以X,M,N,R替代,並指定工作表的儲存格導入程式中的X,M,N,R,不知有這樣的語法使用嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
kevin6372003
iT邦新手 5 級 ‧ 2020-05-19 14:22:08
最佳解答
Sub 巨集1()
x = Range("A1")  'A1 = 指定儲存格
Range("B1") = x  '然後當代數用
End Sub

是要這種效果嗎

看更多先前的回應...收起先前的回應...
peterzxcv iT邦新手 5 級 ‧ 2020-05-19 19:47:17 檢舉

是希望代回VBA程序中

我這樣不是已經對x賦值, 就能在VBA裡使用了阿...剩下就看你要怎麼使用, 看不太懂你要的是什麼
拿你的例子來說你就能夠用來設定for的 1 to x 了

Dim arrCode(X)
(刪)
****編譯錯誤: 必須是常數運算函示
這句錯誤訊息表示你的定義他不接受,直接噴錯,建議你以後可以先了解一下你定義的東西是什麼,我們換個方式做一次:
Dim arrCode() As Integer '先定義一個動態陣列
X = Worksheets("Sheet1").Range("F1").Value '產生一個代數
ReDim arrCode(X) '再拿代數定義陣列

peterzxcv iT邦新手 5 級 ‧ 2020-05-21 19:45:10 檢舉

感謝KEVIN大,也剛好有機會再教育邏輯觀念

我要發表回答

立即登入回答