返回列表 上一主題 發帖

sheet name 問題

sheet name 問題

本帖最後由 basarasy 於 2010-7-27 17:15 編輯

我在book1 打vba  open book2   

  MyName=sheet1.name 有問題.
我是想要book2的sheet1.name
50 字節以內
不支持自定義 Discuz! 代碼

本帖最後由 basarasy 於 2010-7-29 17:34 編輯

回復 17# Hsieh

這個可以run了^^
Dim sh As Worksheet
With Workbooks.Open(ThisWorkbook.Path & "\book2.xlsx")
For Each sh In .Sheets
   If sh.CodeName = "Sheet1" Then MyName1 = sh.Name
   If sh.CodeName = "Sheet2" Then MyName2 = sh.Name
   If sh.CodeName = "Sheet3" Then MyName3 = sh.Name
   
Next
End With
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 Hsieh 於 2010-7-28 17:45 編輯

回復 16# basarasy


    你的代碼能運行嗎?
先把基本語法搞懂
http://forum.twbts.com/viewthread.php?tid=33&extra=page%3D1
學海無涯_不恥下問

TOP

回復 15# Hsieh

謝謝強大的Hsieh 大大.
如果用3個sheet name 這樣寫對嗎

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
With Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
For Each sh1,sh2,sh3 In .Sheets
   If sh1.CodeName = "Sheet1" Then MyName1 = sh.Name
  If sh2.CodeName = "Sheet1" Then MyName2 = sh.Name
  If sh3.CodeName = "Sheet1" Then MyName3 = sh.Name
Next
End With
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 10# basarasy
  1. Dim sh As Worksheet
  2. With Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
  3. For Each sh In .Sheets
  4.    If sh.CodeName = "Sheet1" Then MyName = sh.Name
  5. Next
  6. End With
複製代碼
學海無涯_不恥下問

TOP

'很多地方明明直覺的應該這樣就對偏偏就是不能用. '
   me2
那麼有方法look了 sheet1至sheet3不能 移 ...
basarasy 發表於 2010-7-27 21:34


我想應該不是 Sheet 能不能移動位置的問題,
而是應該要先確認你抓取資料 Sheet 的基準在哪,
看是要以 Sheet 的 "Name 文字" 為標的,
還是要以 Workbook 上的 "第幾個"  Sheet 為標的.

TOP

回復  jackdream

很多地方明明直覺的應該這樣就對偏偏就是不能用.
With Workb ...
luhpro 發表於 2010-7-27 20:50


'很多地方明明直覺的應該這樣就對偏偏就是不能用. '
   me2
那麼有方法look了 sheet1至sheet3不能 移動?
50 字節以內
不支持自定義 Discuz! 代碼

TOP

名字不知道,姓氏不知道,住在那裡都不知道...

或者,可以用頁內容來分 a1/a2...有些什麼就開始工作之類
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

本帖最後由 luhpro 於 2010-7-27 21:03 編輯

回復 9# jackdream

剛剛測試發現真的不能用,
因為會出現 "陣列索引超出範圍" 的錯誤訊息.

With Workbooks(1)
  MyName = .Sheets(1).Name
End With
上面這樣可以.

With Workbooks("spss.xls")
  MyName = .Sheets(1).Name
End With
上面這樣就不接受

可能需要用其他方式來引用,
這也是我覺得 Excel VBA 最不人性的地方,
很多地方明明直覺的應該這樣就對偏偏就是不能用. > <
==========================================================================================================
回復 6# basarasy
回復  kimbal
因為我想要 sheet1.name   用這個sheet改名了都可以run到
eg.  sheet1(sheet1)>sheet1(人名 ...
basarasy 發表於 2010-7-27 19:53


回復 10# basarasy
回復 9# jackdream
Workbooks("book2.xls").Activate
MyName = Sheets(1).Name 這句是左邊到右第1個sheet
如果亂了  sheet3 sheet2 sheet1  就不能指定sheet1了.  


你上面這兩個敘述似乎有邏輯上的疑義,
一方面你希望 Sheet 改名了VBA程式仍然可以參考到原來那個Sheet(序列位置不變)
另一方面你又希望Sheet 改名了VBA上被雙引號括弧的名稱文字能跟著改好參考到相同名稱的Sheet.(序列位置不一樣了)
這樣好像不太可能做到.

TOP

回復 9# jackdream
Workbooks("book2.xls").Activate
MyName = Sheets(1).Name 這句是左邊到右第1個sheet
如果亂了  sheet3 sheet2 sheet1  就不能指定sheet1了.
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 虛空有盡.我願無窮,發願容易行願難。
返回列表 上一主題