之前請海大解答的程式,也還蠻常用的,但每次要改也是蠻麻煩的,想說把有甚麼語法能將指定儲存格導回到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
Sub 巨集1()
x = Range("A1") 'A1 = 指定儲存格
Range("B1") = x '然後當代數用
End Sub
是要這種效果嗎
我這樣不是已經對x賦值, 就能在VBA裡使用了阿...剩下就看你要怎麼使用, 看不太懂你要的是什麼
拿你的例子來說你就能夠用來設定for的 1 to x 了
Dim arrCode(X)
(刪)
****編譯錯誤: 必須是常數運算函示
這句錯誤訊息表示你的定義他不接受,直接噴錯,建議你以後可以先了解一下你定義的東西是什麼,我們換個方式做一次:
Dim arrCode() As Integer '先定義一個動態陣列
X = Worksheets("Sheet1").Range("F1").Value '產生一個代數
ReDim arrCode(X) '再拿代數定義陣列
感謝KEVIN大,也剛好有機會再教育邏輯觀念