Board logo

標題: 在工作表執行另一格工作表的巨集 [打印本頁]

作者: chairles59    時間: 2016-4-25 00:54     標題: 在工作表執行另一格工作表的巨集

請教各位大大:
這是執行其他活頁簿的巨集程式
Sub Sample()
    Application.Run "檔案位置!Module1.Macro1"
End Sub
如果我想改成在同一個工作簿上第一個工作表上執行的二個工作表上的巨集
請問要如何寫這個程式
謝謝
作者: luhpro    時間: 2016-4-25 23:41

本帖最後由 luhpro 於 2016-4-25 23:42 編輯
請教各位大大:
這是執行其他活頁簿的巨集程式
Sub Sample()
    Application.Run "檔案位置!Module1.Mac ...
chairles59 發表於 2016-4-25 00:54


Call Sheets("Sheet2").cc



Sheets("Sheet2").cc
作者: chairles59    時間: 2016-4-27 15:30

回復 2# luhpro

謝謝大大
因為人在旅遊,
手中沒有電腦可以測試
明天回去再測試
作者: chairles59    時間: 2016-4-28 22:08

回復 2# luhpro


    大大:
測試好像不行
他出現
執行階段錯誤9
陣列索引超出範圍

Call Sheets("Sheet2").cc
.cc是甚麼意思
請大大幫我教導一下
作者: luhpro    時間: 2016-4-29 00:07

本帖最後由 luhpro 於 2016-4-29 00:08 編輯
回復  luhpro


    大大:
測試好像不行
他出現
執行階段錯誤9
陣列索引超出範圍

Call Sheets("Sheet2").cc

chairles59 發表於 2016-4-28 22:08

你#1 的敘述是 :

如果我想改成在同一個工作簿上第一個工作表上執行的二個工作表上的巨集

看不出來  巨集所在工作表的名稱,
及想執行的巨集名稱,
所以我只能自己訂,
你要改成你檔案中的名稱,
而不是直接照搬.

會出現 陣列索引超出範圍 的錯誤是正常的,
因為你的檔案裡沒有名稱為 Sheet2 的工作表.

Call Sheets("Sheet2").cc
上式中:
1. Sheet2 是工作表名稱, 請帶入你想要執行的巨集所在的工作表名稱.
2. cc 是巨集名稱, 請帶入你想要執行的巨集的名稱.
作者: chairles59    時間: 2016-4-29 21:19

本帖最後由 chairles59 於 2016-4-29 21:21 編輯

[attach]24108[/attach][attach]24108[/attach]回復 5# luhpro

luhpro 大大:
好像也不行
我把壓縮檔案附上
請大大幫我看一下按鈕7的巨集那裡有問題

謝謝

ps:準大大不好意思
您的程式我加了好多個按鈕
作者: chairles59    時間: 2016-4-29 23:05

回復 5# luhpro

luhpro 大大:
不好意思我在開發人員執行偵錯,按F8時他告訴我
執行階段錯誤438
物件不支援此屬性或方法

    但是我在Sheet1(即時資訊)新增股票按鈕卻能執行
作者: luhpro    時間: 2016-4-30 04:55

回復 7# chairles59
你的 Sheets("格式") 裡並沒有 新增股票名稱 這個 Sub,
呼叫當然會失敗囉...

你只要把  Sheets("格式").  拿掉,
改為直接呼叫 "新增股票名稱" 即可:
  1. Sub 複製格式工作表()
  2.   新增股票名稱
  3. End Sub
複製代碼

作者: chairles59    時間: 2016-4-30 06:53

回復 8# luhpro


    謝謝大大的教導
:)
作者: c_c_lai    時間: 2016-4-30 08:14

回復 9# chairles59
這可分成兩部分來說明,無論是何種方式答案是一致的,
差別只在於表達的方式因人而異:
A. 將『新增股票名稱』程式 (新增股票名稱())
   放置於 「工作表1 (格式)」 內

呼叫方式一:
  1. Sub 複製格式工作表()
  2.     Sheets("格式").新增股票名稱
  3. End Sub
複製代碼
呼叫方式二:
  1. Sub 複製格式工作表()
  2.     Call Sheets("格式").新增股票名稱
  3. End Sub
複製代碼
呼叫方式三:
  1. Sub 複製格式工作表()
  2.     工作表1.新增股票名稱
  3. End Sub
複製代碼
呼叫方式四:
  1. Sub 複製格式工作表()
  2.     Call 工作表1.新增股票名稱
  3. End Sub
複製代碼

作者: c_c_lai    時間: 2016-4-30 08:17

本帖最後由 c_c_lai 於 2016-4-30 08:20 編輯

回復 9# chairles59
B. 將『新增股票名稱』程式 (新增股票名稱())
   放置於 「模組」(此處範例置於 Module3) 內

呼叫方式一  (這便是 luhpro 大大教你的方法)
  1. Sub 複製格式工作表()
  2.     新增股票名稱
  3. End Sub
複製代碼
呼叫方式二
  1. Sub 複製格式工作表()
  2.     Call 新增股票名稱
  3. End Sub
複製代碼
呼叫方式三
  1. Sub 複製格式工作表()
  2.     Call Module3.新增股票名稱
  3. End Sub
複製代碼

作者: 准提部林    時間: 2016-4-30 11:59

  1. Sub 工作表_新增股票名稱()
  2. Dim ShtN$, Sht As Worksheet
  3. Set uRng = ActiveCell
  4. If uRng.Column <> 3 Or uRng.Row < 5 Or uRng = "" Then MsgBox "※請先選取個股代號!": Exit Sub
  5. ShtN = uRng.Value
  6. On Error Resume Next
  7. Set Sht = Sheets(ShtN)
  8. If Not Sht Is Nothing Then MsgBox "工作表名稱已存在! ": Exit Sub
  9. Sheets("格式").Copy after:=Sheets(2)
  10. With ActiveSheet
  11.     .Name = ShtN
  12.     .[B1] = ShtN
  13.     .[D1] = uRng(1, 2)
  14. End With
  15. End Sub


  16. Sub 工作表_刪除最後一個()
  17. Application.DisplayAlerts = False
  18. With Sheets(Sheets.Count)
  19.     If .Name <> "即時資訊" And .Name <> "格式" Then
  20.        If MsgBox("確定要刪除〔" & .Name & "〕工作表? ", 1 + 32 + 256) = vbOK Then .Delete
  21.     End If
  22. End With
  23. End Sub
複製代碼
[attach]24115[/attach]
作者: chairles59    時間: 2016-4-30 19:35

c_c_lai 大大:
謝謝您那麼用心的講解
讓我學的很多
不過這程式是準大大設計的
讓我加了很多按鈕
很不好意思,而且這些按鈕程式都是諸位大大教的




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