標題:
數字名稱工作表
[打印本頁]
作者:
pideo
時間:
2015-11-1 23:59
標題:
數字名稱工作表
小弟目前碰到一個問題
就是小弟想使用vba自動新增不定數量的工作表
而且工作表的名稱為數字,並且在建立好該工作表後在該工作表之A1儲存格填入資料
小弟以下列寫法一直有問題
For i =1 to num
uRng = Workbooks("a.xlsm").Worksheets("代號").cell(i,1) <<<<<<<這邊的儲存格放的都是數字例如1111、132、58752
Workbooks("a.xlsm").Worksheets.Add.Name = uRng
Workbooks("a.xlsm").Worksheets("uRng").cell(1,1) = 某些資料 <<<<<這一段一直顯示有問題
將上一段改成Workbooks("a.xlsm").Worksheets(uRng).cell(1,1) = 某些資料 <<<<<<這樣還是錯
如果改成 Workbooks("a.xlsm").Worksheets(str(uRng)).cell(1,1) = 某些資料<<<<<<<這樣還是錯@@~~~~
Next
請問各位大大小弟到底哪邊弄錯了
懇請指導謝謝
作者:
n7822123
時間:
2015-11-2 01:44
回復
1#
pideo
你的問題點很多,尤其是資料型態的部份
1.你的uRng 是一個
變數名稱
,如果打成"uRng",電腦就會找這個名稱的工作表,顯然是找不到
2.str(uRng)..............只有
值
才能用str這個函數,例如1111轉換成"1111",但是你的uRng是變數名稱............
3.正確寫法是:Workbooks("a.xlsm").Worksheets(uRng).cell
s
(1,1) 你少寫了S
4.寫程式不先定義資料型態是很不好的習慣,你的uRng 裡面裝的值是數字,假設uRng=5,所以Worksheets(uRng),代表電腦去找第5個工作表
所以請補上
Dim Urng As String
更正程式如下,先決條件你的num要有值
Dim Urng As String
For i = 1 To num
Urng = Workbooks("a.xlsm").Worksheets("代號").Cells(i, 1)
Workbooks("a.xlsm").Worksheets.Add.Name = Urng
Workbooks("a.xlsm").Worksheets(Urng).Cells(1, 1) = "某些資料"
Next
複製代碼
作者:
n7822123
時間:
2015-11-2 01:59
回復
2#
n7822123
更正我第2項說法
2.Worksheets(str(uRng)).......................只有
數值
才能用str這個函數,例如1111轉換成"1111",但是你的uRng是變數名稱............
你把str函數改成Cstr 就行了,記住str函數裡面的引數只能是數值,不能是變數名稱
更正如下:
For i = 1 To num
Urng = Workbooks("a.xlsm").Worksheets("代號").Cells(i, 1)
Workbooks("a.xlsm").Worksheets.Add.Name = Urng
Workbooks("a.xlsm").Sheets(CStr(Urng)).Cells(1, 1) = "某些資料"
Next
複製代碼
作者:
n7822123
時間:
2015-11-2 02:30
本帖最後由 n7822123 於 2015-11-2 02:32 編輯
回復
3#
n7822123
抱歉,我說錯啦
剛剛去查了一下str 這個函數,他前面會保留一個字符用來判斷正負號,裡面是可以放變數的
str(-1234)="-1234" 這沒爭議,但是
str(1234)=" 1234" 前面會有一個空格不是"1234"
所以結論就是......str還是少用吧..........我都用Cstr
[attach]22306[/attach]
作者:
pideo
時間:
2015-11-2 18:46
這邊忘了打上s抱歉
感謝大大的指導
使用了Cstr問題就解決了
小弟受益良多
感謝
作者:
GBKEE
時間:
2015-11-3 07:23
本帖最後由 GBKEE 於 2015-11-3 07:27 編輯
回復
5#
pideo
'Worksheets(索引值) ->數字: 依活頁簿上工作表排列第一個到最後一個
'Worksheets(文字) ->這活頁簿上工作表以這字串命名的工作表
Option Explicit
Sub Ex()
Dim i As Integer , num As Integer, uRng As String
With Workbooks("a.xlsm")
For i = 1 To num
uRng = .Worksheets("代號").Cells(i, 1).Text '儲存格的文字
.Worksheets.Add.Name = uRng
.Worksheets(uRng).Cells(1, 1) = 某些資料
Next
End With
End Sub
複製代碼
作者:
准提部林
時間:
2015-11-3 09:38
Sheets(uRng & "").Cells(1, 1) = 某些資料
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)