Board logo

標題: [發問] 如何秀出所有可見之sheet name? [打印本頁]

作者: symis    時間: 2013-3-11 13:40     標題: 如何秀出所有可見之sheet name?

如何秀出所有可見之sheet name至一個新的sheet上表列? (以vba也可)
我用Excel 2007
謝謝!
作者: GBKEE    時間: 2013-3-11 15:56

本帖最後由 GBKEE 於 2013-3-12 17:10 編輯

回復 1# symis
  1. Option Explicit
  2. Sub EX()
  3.     Dim Sh As Worksheet, M As Variant
  4.     For Each Sh In Sheets
  5.         M = IIf(M <> "", M & "," & Sh.Name, Sh.Name)
  6.     Next
  7.     M = Split(M, ",")
  8.     Sheets(1).[A1].Resize(, UBound(M) + 1) = M  '橫向排列
  9.     ' Sheet(1) 第一個工作表
  10.    ' Sheet(1).[A1].Resize(UBound(M) + 1) = Application.Transpose(M)  '直向排列
  11.    ' With Sheets.Add             '新增的工作表
  12.    '    .[A1].Resize(, UBound(M) + 1) = M  '橫向排列
  13.    '    .[A1].Resize(UBound(M) + 1) = Application.Transpose(M)  '直向排列
  14.    'End With
  15. End Sub
複製代碼

作者: symis    時間: 2013-3-12 10:32

不好意思,開一個新檔,執行您的巨集,停在Sheet(1)的地方,出現error: 沒有定義這個Sub或Function
感謝指教!
作者: GBKEE    時間: 2013-3-12 10:45

本帖最後由 GBKEE 於 2013-3-12 15:59 編輯

回復 3# symis
傳上你的程式碼 看看
作者: symis    時間: 2013-3-12 15:13

我是用你的程式碼呀!
圖:

作者: GBKEE    時間: 2013-3-12 17:13

本帖最後由 GBKEE 於 2013-3-12 17:19 編輯

回復 5# symis
不好意思(老花眼),浪費你的時間: 少了s 2#程式碼已修正.
    Sheets(1).[A1].Resize(, UBound(M) + 1) = M  '橫向排列
作者: symis    時間: 2013-3-13 11:55

OK了,感謝您
只是看不懂最後一行程式,是如何產生結果的?
我試寫比較淺的語法如下:
    Columns(1).Insert
    For i = 1 To Sheets.Count
        Cells(i, 1).Value = Sheets(i).Name
        If Sheets(i).Visible = False Then Cells(i, 2).Value = "Hidden"
    Next i
作者: GBKEE    時間: 2013-3-13 12:35

回復 7# symis
M = Split(M, ",")
Sheets(1).[A1].Resize(, UBound(M) + 1) = M  '橫向排列
VBA的說明中查看可了解.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)