看板 Office 關於我們 聯絡資訊
軟體:excel 版本:2007 請問巨集的表單控件能否顯示運行代碼的時間點 當我運行按鈕1,就會顯示運行的時間點,在表單控制中顯示。 http://files.c.excelhome.net/forum/201609/02/155554j2nyjja62jzzy7ar.png
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 14.127.92.244 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1472803409.A.6BD.html
soyoso: 設定於shapes.oleformat.object.caption 09/02 16:18
soyoso: 時間格式調整可用format和now 09/02 16:18
soyoso: https://youtu.be/LiVfL4dKuy0 09/02 16:22
yyingx: 嗚嗚,打不開youtube 09/02 16:45
soyoso: http://imgur.com/a/hUqKE 同youtube為demo 09/02 18:21
yyingx: 第一次接觸這個,能否直接給個巨集截圖,非常感謝! 09/02 18:24
soyoso: 回文搜尋一下就有 09/02 18:28
yyingx: 古人云,授人以魚,不如授人以漁,我也知道要自己動手 09/02 18:31
yyingx: 一個基礎薄弱了寫,再一個大陸的百度很渣。 09/02 18:32
soyoso: 或是以shapes.drawingobject.caption 09/02 18:58
soyoso: 寫法worksheet.shapes(name或index).oleformat.....= 09/02 19:04
soyoso: format() 09/02 19:04
soyoso: worksheet有可以是activesheet、sheets(name或index)或 09/02 19:07
soyoso: 工作表1..等方式 09/02 19:07
yyingx: 如果有兩個shapes,就要判斷么,<>shapes("A"),就 09/02 22:23
Shapes(2).DrawingObject.Caption = Application.Text(Now(), "yyyy-mm-dd hh:mm:ss:") ※ 編輯: yyingx (27.38.52.181), 09/02/2016 22:24:40
yyingx: 是這樣思路嗎,但是不知道定位到shapes(2)上 09/02 22:25
soyoso: 在vba內可直接用format,不用引用worksheetfunction內的 09/02 22:26
soyoso: text 09/02 22:26
soyoso: 原po要定位到兩個shape的其中一個嗎? 09/02 22:27
yyingx: 原P0運行"按鈕1",系統時間就生成這另外一個shape上 09/02 22:36
yyingx: Shapes(2).DrawingObject.Caption = 09/02 22:37
yyingx: Format(Now(), "yyyy-mm-dd hh:mm:ss:") 09/02 22:38
yyingx: 現在我不知道另外一個shapes的name或者index 09/02 22:39
soyoso: name顯示於名稱方塊內 09/02 22:43
yyingx: 但是另外一個shapes是要顯示系統時間的,這個怎么抓 09/02 22:45
soyoso: 原po有二個按鈕,一個執行巨集,另一個顯示系統時間,這是 09/02 22:53
soyoso: 否有誤解呢? 09/02 22:53
yyingx: 沒有,最后的效果圖就是您demo那樣 09/02 22:55
soyoso: shapes(指定要顯示系統時間表單按鈕的name) 09/02 22:56
soyoso: name顯示於名稱方塊內 09/02 22:56
yyingx: 這個name是按鈕2---->系統時間,這個是變量呀 09/02 23:00
yyingx: "按鈕2"----->"2016-09-02 23:00" 09/02 23:00
soyoso: 變量的是caption而並非要原po改name的值,是以name去指去 09/02 23:05
soyoso: 該shape 09/02 23:06
yyingx: 還是不太明白,我現在就定位另一個表單按鈕,然后K入時間 09/02 23:10
Sub ErgShapes_2() Dim myShape As Shape Dim i As Integer i = 1 For Each myShape In Sheet4.Shapes If myShape.Type = msoTextBox Then myShape.TextFrame.Characters.Text = Format(Now(), "yyyy-mm-dd h h:mm:ss") i = i + 1 End If Next End Sub ※ 編輯: yyingx (27.38.52.181), 09/02/2016 23:22:08
yyingx: 改抓文本框了,但感覺好繁瑣 09/02 23:23
yyingx: Sheets("未結訂單").Shapes("按鈕2_Click") 09/02 23:46
yyingx: .DrawingObject.Caption = 09/02 23:46
yyingx: Format(Now(), "yyyy-mm-dd hh:mm:ss") 09/02 23:47
ActiveSheet.Shapes("Button 2").OLEFormat.Object.Caption = Format(Now(), "yyyy-mm-dd hh:mm:ss") ※ 編輯: yyingx (27.38.52.181), 09/02/2016 23:55:55
yyingx: 終于搞定,謝謝SO大耐心指點 09/02 23:56
waiter337: 我也學到一招了0,0 我也要用這個時間點 09/03 03:39
yyingx: 還想追問一下,Button 2是屬于shapes的name還是index? 09/03 18:57
soyoso: 應為shape's name 09/03 20:46
soyoso: 抱歉,回文內的index應更正為index number才為正確 09/03 20:47
soyoso: 因index為shape's name或是index number 09/03 20:49
yyingx: 假如shapes有表單控件,圖片,文本框,這個index NO.如何 09/03 20:58
yyingx: 找 09/03 20:58
soyoso: 可以巨集從選取中的按鈕,回傳index值 09/03 21:13
soyoso: 或以回文寫到的shape集合迴圈,加上判斷回傳要的index值 09/03 21:18
waiter337: 錄製巨集也能幫你改按鈕名稱 09/04 15:04