中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
在VSTO項(xiàng)目中使用Excel的撤銷功能(一)
userphoto

2023.04.09 安徽

關(guān)注

在VSTO項(xiàng)目中使用Excel的撤銷功能(一)

在VBA環(huán)境下,運(yùn)行VBA代碼后,Excel的撤銷按鈕是灰色的,這意味著VBA代碼導(dǎo)致工作表、工作簿的改變是無法撤銷的,其實(shí)VBA內(nèi)置了一個(gè)Application.OnUndo 方法 ,能夠在運(yùn)行代碼后實(shí)現(xiàn)撤銷功能,但是具體的撤銷過程需要自行實(shí)現(xiàn)。OnUndo(Text,Procedure) 方法有兩個(gè)參數(shù),第一個(gè)是撤銷按鈕顯示是文字信息,第二個(gè)是撤銷命令具體的過程名稱,其實(shí)就是在模塊中函數(shù)的名稱。第二個(gè)參數(shù)通過特殊的構(gòu)造,可以實(shí)現(xiàn)傳遞參數(shù)效果,具體實(shí)現(xiàn)過程如下圖:

  

由于OnUndo方法的第二個(gè)參數(shù)是模塊中函數(shù)名稱,在VBA中較容易可以實(shí)現(xiàn),那如何在VSTO中實(shí)現(xiàn)。想解決這個(gè)問題,核心在于如何把撤銷代碼放入VBA工程,以及如何在VSTO中調(diào)用VBA工程模塊中的代碼。

 一、新建一個(gè)Excel外接程序

  

然后在VSTO的debug目錄建立一個(gè)xlam格式的加載宏,命名為iCells_Undo.xlam,如圖:

在加載宏中的模塊中,寫入撤銷的代碼:

1 Sub undo(str As String)
2 ActiveSheet.Range("a1").Value = str
3 End Sub
 
如圖:


二、在VSTO項(xiàng)目中的ThisAddIn中加入以下代碼:

 1  Private xlam As Object = Nothing
 2     Private Sub ThisAddIn_Startup() Handles Me.Startup
 3         Dim strPath As String = System.AppDomain.CurrentDomain.BaseDirectory 
 4         Dim strXlam As String = System.IO.Path.Combine(strPath, "iCells_Undo.xlam")  
 5         If IO.File.Exists(strXlam) Then  
 6             xlam = Globals.ThisAddIn.Application.Workbooks.Open(strXlam)  
 7         Else
 8             xlam = Nothing
 9         End If
10     End Sub
11 
12     Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
13         Try
14             If xlam IsNot Nothing Then
15                 xlam.close(False)  
16             End If
17         Catch ex As Exception
18         End Try
19     End Sub

以上代碼作用是在加載項(xiàng)開始的時(shí)候,就打開iCells_Undo.xlam,打開iCells_Undo.xlam的目的在于之后需要在加載宏中存放撤銷的代碼,并且調(diào)用。

 三、在VSTO中添加一個(gè)Button,命名Button1,為這個(gè)Button添加事件:

1  Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click2         Dim str As String = Nothing3         Dim ExcelApp As Excel.Application = Globals.ThisAddIn.Application4         str = ExcelApp.ActiveSheet.Range("a1").Value5         ExcelApp.ActiveSheet.Range("a1").Value = "iCells"6         ExcelApp.OnUndo("撤銷A1單元格賦值", "'undo" & """" & str & """" & "'")7 End Sub

 最后,運(yùn)行項(xiàng)目就可以實(shí)現(xiàn)撤銷功能,但是如果每一個(gè)撤銷過程如果都放入到iCells_Undo.xlam加載項(xiàng)中,已然失去了VSTO的優(yōu)勢(shì),第二篇分享如何把具體的撤銷過程放到VSTO項(xiàng)目中。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Excel及WPS插件開發(fā) VSTO極速入門
Create User Defined Function that changes the...
VSTO之旅系列(二):創(chuàng)建Excel解決方案
如何將Excel工作簿的所有工作表一次導(dǎo)出成多個(gè)獨(dú)立文件?
VSTO開發(fā)指南(VB2013版) 第二章 Office解決方案介紹
VBA外部鏈接2不更新
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服