【发布时间】:2021-03-04 19:17:03
【问题描述】:
我是 VBA 的初学者,我想知道我的代码是否高效。我想知道这太长了,也许有一些功能可以保存电子表格?
我是这样处理的:
- 我点击按钮(代码运行Userform“Edition Fichier”),这个Userforme在我的代码中的名字是uSauvegarde。
- 我做出选择:i>
-
代码是:
Private Sub bParcourir_Click() With Application.FileDialog(4) .AllowMultiSelect = False .Show uSauvegarde.TextBox1 = .SelectedItems(1) End With End Sub Private Sub bValider_Click() Dim wb_Saisie As Workbook, wb_Sauv As Workbook Dim New_Wkb As String, TableDesFeuilles() As String Dim i As Integer, NumF As Integer Dim S As Worksheet Dim obj As Shape Dim mdCalc As XlCalculation mdCalc = Application.Calculation Application.Calculation = xlCalculationManual Application.ScreenUpdating = False New_Wkb = uSauvegarde.TextBox1 & "\" & uSauvegarde.TextBox2 & ".xlsx" Set wb_Saisie = ThisWorkbook wb_Saisie.Activate i = 0 For Each S In wb_Saisie.Sheets If S.Visible = True Then ReDim Preserve TableDesFeuilles(i) TableDesFeuilles(i) = S.Name i = i + 1 End If Next Application.ScreenUpdating = False NumF = 0 BlocageModif = True For Each S In wb_Saisie.Sheets If S.Visible = True Then S.Copy ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial xlPasteValues If NumF = 0 Then Set wb_Sauv = ActiveWorkbook NumF = 1 Else ActiveSheet.Move After:=wb_Sauv.Worksheets(NumF) NumF = NumF + 1 End If Range("A1").Select For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1 If ActiveSheet.Columns(i).Hidden = True Then ActiveSheet.Columns(i).Delete Next For j = ActiveSheet.UsedRange.Rows.Count To 1 Step -1 If ActiveSheet.Rows(j).Hidden = True Then ActiveSheet.Rows(j).Delete Next For Each obj In ActiveSheet.Shapes If obj.OnAction <> "" Then obj.OnAction = "" Next End If Next S For Each NomLocal In wb_Sauv.Names If InStr(NomLocal.Name, "Print_") = 0 Then NomLocal.Delete Next wb_Sauv.SaveAs Filename:= _ New_Wkb, FileFormat:= _ xlOpenXMLWorkbook, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False wb_Sauv.Close Application.Calculation = mdCalc Application.ScreenUpdating = True MsgBox ("Fichier enregistré") uSauvegarde.Hide End Sub Private Sub OptionButton1_Click() With ThisWorkbook.Sheets("Feuil1") uSauvegarde.TextBox2 = "Mon_fichier" End With End Sub Private Sub OptionButton2_Click() uSauvegarde.TextBox2 = "" End Sub
感谢您的帮助!
【问题讨论】: