2017-07-19 35 views
0

這感覺就像一個愚蠢的問題,但我不能弄清楚,所以這裏去...VBA - 命令按鈕點擊子 - 當工作表中創建新的每次

我有,基於一個工作簿什麼是輸入到用戶窗體,每次點擊用戶窗體上的命令按鈕時創建一個新的工作表,並刪除舊窗體。

這意味着,儘管新的工作表總是被賦予相同的名稱(「結果」),但工作表編號每次都會增加;它目前正在調用自己的Sheet48,下一次運行它將會是Sheet49。

我想要做的是將一個命令按鈕添加到該「結果」表,用戶可以單擊它們以將它們帶到不同的工作表。我已經添加了一些代碼到用戶窗體中,它在「結果」工作表上創建命令按鈕本身。我還沒有寫出能告訴它將用戶帶到另一張工作表的子文件,但我相信我可以毫無困難地做到這一點。

我的問題是我如何將sub分配給按鈕,考慮到它所在的工作表不是永久的?我認爲子應該進入一個標準模塊,但是我所看到的所有例子都是以「CommandButton1_Click」或「CommandButton2_Click」開頭的,並存儲在表單對象本身中。看起來像這些數字1和2是指給定工作表上的命令按鈕的順序,但是大概是標準模塊上的一個子將不知道要查看哪個工作表。

我希望這是有道理的 - 任何有用的解釋將不勝感激!謝謝。

編輯: 這是我使用創建命令按鈕並(試圖)子分配給它的代碼:

'Add a command button, which will allow users to jump to the full report 

ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ 
     , DisplayAsIcon:=False, Left:=1025, Top:=130.5, Width:=160, Height:= _ 
     400).Select 

ActiveSheet.CommandButton1.Caption = "Click here to see the original report" 
ActiveSheet.CommandButton1.WordWrap = True 
ActiveSheet.CommandButton1.OnAction = "Module1.ButtonForOriginal" 'the sub works in isolation, but this line isn't assigning it. 

任何人都可以看到任何問題嗎? ButtonForOriginal子過程獨立工作,所以它看起來像我只是不正確地調用它?

編輯2 - 我現在已經用不同的方法取得了正確的效果 - 如果您有興趣,請參閱下面的答案。感謝那些幫助並讓我走上正確道路的人!

回答

0

好吧,我有點想通了。我出於某種原因決定使用ActiveX命令按鈕,而不是普通的舊窗體。這似乎使事情變得更加困難。我不明白的細節,但我已經達到了我所做的後來的效果,而不是:

ActiveSheet.Buttons.Add(1025, 130.5, 160, 400).Select 
     Selection.Characters.Text = "Click here to see the original report" 
    With Selection.Characters(Start:=1, Length:=200).Font 
     .Name = "Verdana" 
     .FontStyle = "Regular" 
     .Size = 10 
     .Strikethrough = False 
     .Superscript = False 
     .Subscript = False 
     .OutlineFont = False 
     .Shadow = False 
     .Underline = xlUnderlineStyleNone 
     .ColorIndex = 1 
    End With 
    Selection.OnAction = "ButtonForOriginal" 
0

據我所知,你試圖添加新的按鈕,我會建議使用非依賴按鈕超鏈接來運行你的模塊。

單擊插入形狀 - 矩形左右 - 和使用Selection.OnAction = 「!YourWorkBook」YOURSUB「

+0

使用新按鈕,我實際上並沒有添加新的工作表;我只想取消隱藏現有的一個。 –

+0

對不起,按下發送太快... –

+0

事件序列是 - Userform創建新工作表,其中還包含一個新按鈕 - 單擊新按鈕將取消隱藏現有工作表。感謝您的建議 - 我會嘗試,或者在我創建新按鈕的用戶表單代碼中進行嘗試,希望我理解正確! –

0

」CommandButton1_Click「 應該是一個事件過程。他們進入與對象所在表單相連的模塊頁面。所以,當你點擊它時,它知道要運行哪個程序,它是連接到按鈕所在表單的程序。

+0

對不起,我還是有點困惑......按鈕所在的表格只是臨時存在,所以我不認爲我可以在模塊頁面添加任何東西? (我假設工作表的模塊頁面將在項目中的Microsoft Excel對象下列出 - 是嗎?) –

+0

是的。所以當你創建按鈕時,你正在做類似 .OnAction =「Fred」 –

+0

是的,我有ActiveSheet.CommandButton1.OnAction =「ButtonForOriginal」(「ButtonForOriginal」是我的子名稱)。子實際上是獨立工作的,所以我現在覺得我只是在這個OnAction部分沒有正確調用它....嗯。 –