COCO研究院

 找回密碼
 註冊
搜索
查看: 4430|回復: 1

[EXCEL] 請教一下VBA裡事件驅動要怎麼用呢?

[複製鏈接]
發表於 19-5-1 18:23 | 顯示全部樓層 |閱讀模式
本帖最後由 MaverickRay 於 19-5-1 18:49 編輯

不好意思,距上回發問過後,好陣子沒研究VBA了~
想請教各位先進達人們一個關於事件驅動的小疑問
前幾日我在網上載到一個EXCEL檔,內容可以抓取個股每日收盤價。
很實用,可是我原先在做的是,在試算表上設定好相關公式後,然後每日利用個股收盤價來做篩選比較,諸如本益比比較等。

也因為我想參照每日收盤價,所以才去找了下有沒有什麼網站可參照..
就這樣載到一個不錯的檔.

其內容是在名為(主頁)的工作表內,內的巨集大致如下:
------------------------------------
Private Sub cmdRun_Click()
  '輸入日期..丟入分類代碼.........
  '將日期值與分類代碼借由呼叫模組內的程式來達成更新收盤價的目的
  call get_stock(GetDate, GetCode)  'get_stock是放在模組下的程序名
End Sub

------------------------------------
然後我點入VBE裡的模組去看,內容大致即接受(本頁)工作表內傳入的引數
然後對該網頁進行更新的動作.
===================
於是我便想了若我也能利用他的方法,然後將這塊程序丟入到我的試算表,這樣我就不用煩惱要到哪找收盤價或者還得一一輸入收盤價的問題了..
(雖然我也有想過可以利用參照這個活頁簿,但因為有時檔案久了會搬來搬去或檔名更改變成參照出問題的日後困擾,所以還是想把它移植過來自己的表格應該會較好)

可是卻發現在他的檔案裡,工作表名(主頁)裡
使用者可以自行輸入日期,然後分類代碼則是借由資料選單的方式自行選取分類名後,由EXCEL的函數自行抓到。
這裡都很容易理解,問題在我輸入完日期與選完分類後,他的主頁下有一個 "下載" 按鍵(點擊後即可進行網頁更新)
可是我卻無法在他的下載鍵做移動或在上頭按右鍵等...(如下圖)
2019-05-01_171420.png




想請教
Q1、這個按鍵是怎麼設定的,為何我無法做移動?
另應該不是用插入\圖例\圖片 的方式,而是用 設計\插入\表單控制選項 的方式的樣子,因為當我按了下載後,有時可以看到下載二字會變反灰色..
一般用插入圖片時好像不會反白..

如果他是用鎖定或保護的方法,那我要如何取消呢?
而由於無法對"下載"按鍵按右鍵,所以無法得知其指定的巨集為哪一個,不過我看來看去,程式碼也就那二段..(一個在工作表名(主頁),一個在模組)
所以也應該就是針對模組的程式碼在做網頁更新..

故我把它的工作頁的巨集,跟模組的巨集貼到我自己的EXCEL裡
一樣工作頁的巨集貼工作頁
模組的巨集貼模組
其它的資料參照頁也比照辦理的全部貼了過來

然後我在自己的工作表內插入一個 表單控制選項鍵(類似他的下載鍵),最後就是要指定巨集了..
於是怪了,明明在模組內有放一個巨集的..內容大致如下:
----------------------------------------------------------
Sub GetStrockPrice(ByVal GetDate As String, ByVal selectType As String)
    Sheets("收盤價").Select
    Cells.Delete
    With ActiveSheet.QueryTables.Add(Connection:=   ' 網址內容落落長省略.....)
        .Refresh BackgroundQuery:=False
    End With
End Sub
----------------------------------------------------------
Q2但當我要指定巨集時卻發現沒有巨集可指定,這是怎麼一回事呢?
(現用活頁簿內的巨集空空如也,存的檔也是.xlsm)

由於以前沒發生這種事,所以我在網路找了很久,諸如:
1、如何讓VBA可以在單點擊按鍵時觸發事件.
2、一個便是上頭的問題,沒有巨集可供指定..

在找單擊觸發時,找到的大多是用 自訂表單 裡按鍵触發,可是我看了下這載回的檔案裡,
在VBE內它並沒有所謂的 自訂表單 啊..(還是說其實表單是可以在VBE裡被隱藏呢)?????
如果是這樣我要如何恢復呢?

(其它補充)
我查了下資料,發現在VBA裡可以單獨針對工作表來做觸發、也可以對活頁簿來做觸發
所以程式碼(巨集)要放在哪,就有其先天上設計時的限制..

Q3、換言之,是不是我可以理解成若巨集放在工作表內的,在其它工作表就不可對其呼叫?
或者是理解成,當我指定到此工作表時,則巨集內的事件才會被引發。


最後我想不然我自己在模組內自己寫巨集吧..
可是這才發現,啊我弄半天,就是找不到如下載檔案裡在(主頁)內的
Private Sub cmdRun_Click()
Click()這玩意呢?

我點來點去,當我在工作表內時,就只有左上角的Worksheet  

當我選擇用worksheet後,右上角雖有選項,但卻找不著Click()可用
2019-05-01_184150.png


切到模組時,若左上角選擇只有 一般 這選項可選擇


可是我若將游標再點到下載檔裡本頁 工作表時,它的左上角選項分別有:一般、cmdRun、worksheet
而它是用cmdRun,且右上角內有Click()可選用



Q4、那什麼是cmdRun?我要如何才能讓自己的工作表也可以用這功能,是不是只要叫出cmdRun後右上方就可以選用Click()了呢?


我自己將載回來在主頁工作表內的cmdRun巨集貼到我自己的工作表內時,還是沒有click(),怎麼會這樣呢?


(如下圖)(左方沒有cmdRun、右方沒有click)(左上只有二個選項,沒有cmdRun)
2019-05-01_181517.png
(這是我貼到自己工作表後的圖)
(雖然程序名是cmdRun,但右上沒有Clcik)
2019-05-01_180702.png
(這是我貼到自己工作表後的圖)

問題暫且這樣了,有點小亂,因為照本宣科的抄過去,結果卻在指定巨集時出現找不到巨集的情況...
希望有大大能再次幫幫忙,在此先跟你們道聲謝謝了~~



2019-05-01_181155.png
 樓主| 發表於 19-5-2 00:26 | 顯示全部樓層
本帖最後由 MaverickRay 於 19-5-2 01:14 編輯

嘿嘿,,剛剛在我不小多方嚐試下,發現對方好像是用 設計\裡的插入\ActiveX控制項
然後我自己也這麼試了下,劃了個按鍵,然後雙點擊後會進入VBE編碼,但我不知道怎麼用
他好像不似 插入\表單控制項  後直接指定巨集就可.

雖然我在開啟的VBE裡,將程序碼貼了過去,但當回到EXCEL按讓ActiveX劃出來的按鍵時,結果跟我載回來的檔案一樣,總算是可以順利更新網頁了.

但問題又出現新的了,=>這個按鍵,有時錯誤時(好像是沒有在裡面放入程序時),我可以看到在EXCEL上看到EXCEL對這按鍵的呼叫公式..
剛看到印像中好像是內崁(CommandButton1_Click())什麼的..

但當正常後,在EXCEL內不管用左鍵或右鍵點這個按鍵,左鍵就是只會執行內部巨集,卻不再試算表內顯示公式了,另外更奇怪的是,按右鍵時,卻無法對這個按鍵做刪掉的動作...

但我剛剛又不知道怎麼用的,在這個按鍵上按滑鼠右鍵時又有時可以出現快選功能表,可以讓我選擇剪下,這樣這插入的ActiveX 鍵就可以順利幹掉了..

不過現在我又試著在新工作表內這樣的插入\ActiveX..然後劃了個按鍵
機車的又來了,要在這按鍵上按右鍵刪除(剪下),但怎麼按右鍵就是不會出現快顯功能表..
啊~~~我的頭好痛啊...怎麼可以搞這麼複雜來的...
@2019/5/2 01:14

自問自答,原來出在"設計模式"這鍵沒點,就無法對這ActiveX插入的外來者做更改的動作。
嗯...真是困難...好累,搞到現在一點進展都沒有..只知道了新玩意...哎..感覺超沒效率的...

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-22 07:16

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |