excel2003 vba變量儲存問題

有個問題不知如何解決

Sub Macro4()
Dim name, s As Integer
For i = 2 To 10
name = Cells(i, 1).Value
MsgBox name
Next i
End Sub

可以依序取到A2~A10的內容,但是都存進name這個變量裡
若將
name = Cells(i, 1).Value
改成
name & i = Cells(i, 1).Value
則出現錯誤
excel2003 vba變量儲存問題

是否有方法讓前後都用變量呢?
目前欲取的值為A2:D21的話是否能將每個格子內的值都放進不同變量以供調用呢?

原本的預想是
A列為name B列為barcode C列則是item
用for 指令將A2放進名稱為"A2"的變量中,B2放名稱為B2的變量
然後調用的時候再依序調用
不過現在卡在只要等於的左邊用到""或&就報錯
是否有辦法處理呢?
若上述可以的話是否能指定取某個活頁簿內的資料而不用在該活頁簿呢?
EX.在sheet2取這些值分別丟入變量,再在sheet1內調用填入

要用到這些東西的原因是,因為文字藝術大師不能直接用"="去填入值
2017-05-05 21:35 發佈
Sub Macro4()
Dim namedata(1 To 9) As Variant
For i = 2 To 10
namedata(i - 1) = Cells(i, 1)
MsgBox namedata(i - 1)
Next i
End Sub

不要用 name ,改成別的字 name 在vba 裡面是有功能的
wei9133 wrote:
有個問題不知如何解...(恕刪)


丟陣列吧

Sub Macro4()
Dim names,name_min,name_max,i, s As Integer
name_min = 2
name_max = 10
redim names(name_min to name_max)'多加幾行讓你看得懂redim用法
For i = name_min To name_max
names(i) = Cells(i, 1).Value
MsgBox names(i)
Next i
End Sub
wei9133 wrote:
有個問題不知如何解決...(恕刪)

小觀念,你用了一個name & i ,問題是你也沒宣告相關的東西,請問誰要去接。會出錯是正常。就如同百家姓,可是都叫小明,今天老師點名"小明"做事,請問誰要去做。
感謝以上幾位目前用陣列解決
代碼如下
Sub Macro7()
Sheets("POP").Select
Dim names, barcode, item, money, var_min, var_max, i, s As Integer
var_min = 2
var_max = 10
ReDim names(var_min To var_max)
ReDim barcode(var_min To var_max)
ReDim item(var_min To var_max)
ReDim money(var_min To var_max)
For i = var_min To var_max
barcode(i) = Cells(i, 1).Value 'a1條碼
item(i) = Cells(i, 2).Value 'b1貨號
names(i) = Cells(i, 3).Value 'c1品名,不用name用names是因為name在vab是有功能的
money(i) = Cells(i, 4).Value 'd1金額
'MsgBox "品名:" & names(i) & vbCrLf & "條碼:" & barcode(i) & vbCrLf & "貨號:" & item(i)
Next i

只是當行數不夠時就會報錯(因為無資料的樣子)
要如何在開始前先檢測A2~A11最後是哪一格有資料並將var_max設為該格
至於中間有空格出現這種狀況就自行手動排除了
ex.只有到A5有資料,所以var_max應該是4

============================================================
經過google查詢後已解決上述問題
var_max = Range("A65536").End(xlUp).Row '取A列最後一格位置

整串的腳本則為
Sub Macro1()
'
Sheets("A3_POP").Select
Dim names, barcode, item, money, var_min, var_max, i, s As Integer
var_min = 2
'var_max = 10
var_max = Range("A65536").End(xlUp).Row '取A列最後一格位置
'MsgBox var_maxx
ReDim names(var_min To var_max)
ReDim barcode(var_min To var_max)
ReDim item(var_min To var_max)
ReDim money(var_min To var_max)
For i = var_min To var_max
barcode(i) = Cells(i, 1).Value 'a1條碼
item(i) = Cells(i, 2).Value 'b1貨號
names(i) = Cells(i, 3).Value 'c1品名,不用name用names是因為name在vab是有功能的
money(i) = Cells(i, 4).Value 'd1金額
'MsgBox "品名:" & names(i) & vbCrLf & "條碼:" & barcode(i) & vbCrLf & "貨號:" & item(i)
Next i
For i = 2 To var_max
Sheets("a3").Select
ActiveSheet.Shapes("WordArt 3").Select
Selection.ShapeRange.TextEffect.Text = barcode(i)
ActiveSheet.Shapes("WordArt 1").Select
Selection.ShapeRange.TextEffect.Text = names(i)
ActiveSheet.Shapes("WordArt 10").Select
Selection.ShapeRange.TextEffect.Text = money(i)
Sheets("a3").Select
Sheets("a3").Copy Before:=Sheets(1) '複製
Sheets("a3 (2)").Select
names(i) = Mid(names(i), 1, 31) '截31字元
names(i) = Replace(names(i), "*", "") '刪除"*",因名稱不允許
names(i) = Replace(names(i), "/", "") '刪除"/",因名稱不允許
names(i) = Replace(names(i), "\", "") '刪除"\",因名稱不允許
names(i) = Replace(names(i), "[", "") '刪除"]",因名稱不允許
names(i) = Replace(names(i), "]", "") '刪除"]",因名稱不允許
names(i) = Replace(names(i), ":", "") '刪除":",因名稱不允許
names(i) = Replace(names(i), "?", "") '刪除"?",因名稱不允許
Sheets("a3 (2)").Name = names(i) '更名

Next i
End Sub
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?