首页
/
每日頭條
/
職場
/
vba新建指定名稱工作表
vba新建指定名稱工作表
更新时间:2025-07-24 10:15:24

Excel每次新建工作表要從一個空表格開始,然後分别設置表格參數,然後輸入數據。

感覺有點麻煩,如果是初學者,可能根本找不到在哪裡設置單元格格式。

本節介紹一種方法,制作一個全功能建表格式,選擇相應的格式,然後一鍵完成。

vba新建指定名稱工作表(VBA自動創建工作表)1

上圖為可選擇的功能項,可以看到,有表的行數、列數、顔色、字體、字号等等格式。

另外标題和邊框可以選擇或者不選。

選擇完成後單擊新建按鈕就可以看到下圖完成的新表了。

是不是很簡單。

當然,數據還是要自己錄入,不過後續有時間,也可以完成數據錄入的功能。

vba新建指定名稱工作表(VBA自動創建工作表)2

下圖為換了一種格式的新建表。

如果是這樣簡單的二維表創建,那麼使用這樣的方法,在很短的時間内可以完成很多個表新建,實際上完全可以增加一行代碼一次新建多個相同的表。

本示例就不展示出來了。

vba新建指定名稱工作表(VBA自動創建工作表)3

重點看一下代碼實現方法

圖中的控件使用了解代碼創建,如下代碼所示:

Private Sub setListLabelAndText()'添加Label和ComboBoxr控件 i = 0 For Each x In xArr Set xobj = Me.Controls.Add("Forms.Label.1") With xobj .Height = 28 .Top = i * .Height Me.Label1.Top Me.Label1.Height 10 .Left = 120 .Width = 60 .Caption = x End With Set tobj = Me.Controls.Add("Forms.ComboBox.1", x) With tobj .Height = xobj.Height - 4 .Top = xobj.Top - 2 .Left = xobj.Left xobj.Width 10 .Width = 280 .BorderStyle = 1 .BorderColor = RGB(211, 211, 211) If i = 6 Then .List = fArr '字體 Else .List = lArr End If .Value = 1 .Style = 2 End With If VBA.InStr(1, x, "顔色") <> 0 Then ComChangeC(i).inic tobj End If i = i 1 Next x For Each t In tArr Set xobj = Me.Controls.Add("Forms.Label.1") With xobj .Height = 28 .Top = i * .Height Me.Label1.Top Me.Label1.Height 10 .Left = 120 .Width = 60 .Caption = t End With Set tobj = Me.Controls.Add("Forms.TextBox.1", t) With tobj .Height = xobj.Height - 4 .Top = xobj.Top - 2 .Left = xobj.Left xobj.Width 10 .Width = 230 .BorderStyle = 1 .BorderColor = RGB(211, 211, 211) .Value = "新建工作表标題名稱" End With i = i 1 Next t i = 1 For Each o In oArr Set oobj = Me.Controls.Add("Forms.CheckBox.1", o) With oobj .Height = tobj.Height .Top = tobj.Top (tobj.Height 2) * i .Left = tobj.Left .Width = 80 .Caption = o .Value = True End With Clk(i).inic oobj i = i 1 Next o Set xobj = Nothing Set tobj = Nothing Set oobj = Nothing End Sub

vba新建指定名稱工作表(VBA自動創建工作表)4

本例中還新建了兩個類模塊,一個是ComboBox的Change事件,另一個是CheckBox的Click事件。

由于是動态新建的控件,事件也要動态引入。

ComboBox類模塊代碼:

Option Explicit Public WithEvents cli As MSForms.ComboBox Public Sub inic(bt As MSForms.ComboBox) Set cli = bt End Sub Private Sub cli_Change() ActiveSheet.Range("A1").Interior.ColorIndex = cli.Value Dim cx cx = ActiveSheet.Range("A1").Interior.Color cli.BackColor = cx End Sub

CheckBox類模塊代碼:

Option Explicit Public WithEvents cli As MSForms.CheckBox Public Sub inic(bt As MSForms.CheckBox) Set cli = bt End Sub Private Sub cli_Click() Select Case cli.Caption Case oArr(0) '表頭 If cli.Value Then SetCombTrueOrFalse tArr(0), True Else SetCombTrueOrFalse tArr(0), False End If Case oArr(1) '标題 If cli.Value Then SetCombTrueOrFalse xArr(4), True Else SetCombTrueOrFalse xArr(4), False End If End Select End Sub Private Sub SetCombTrueOrFalse(xStr As Variant, xBoolean As Boolean) For Each xobj In cli.Parent.Controls If xobj.Name = xStr Then xobj.Value = "" xobj.Enabled = xBoolean Exit For End If Next xobj End Sub

Form窗體代碼還是比較多,也就是一些控件屬性設置,不貼出來了。

最重要的一段代碼為按鈕代碼:

Private Sub CommandButton1_Click() '新建工作表 For Each xobj In Me.Controls If TypeName(xobj) = "ComboBox" Then If VBA.Len(xobj) = 0 Then MsgBox "信息不能為空值!", vbInformation, "提示": Exit Sub For i = 0 To UBound(xArr) If xArr(i) = xobj.Name Then If VBA.Len(xobj) <> 0 And i <> 6 Then yArr(i) = VBA.CInt(xobj.Value) ElseIf VBA.Len(xobj) <> 0 And i = 6 Then yArr(i) = VBA.CStr(xobj.Value) Else yArr(i) = 0 End If End If Next i End If If TypeName(xobj) = "TextBox" Then For i = i To UBound(tArr) i If tArr(i - i) = xobj.Name Then ReDim Preserve yArr(i) yArr(i) = xobj.Value End If Next i End If Next xobj MsgBox Join(yArr) Dim s As Worksheet, r As Range Set s = ThisWorkbook.Worksheets.Add(before:=Sheets(1)) s.UsedRange.Clear Set r = s.Range(s.Cells(1, 1), s.Cells(yArr(1), VBA.CInt(yArr(0)))) With r .Interior.ColorIndex = yArr(2) .Font.ColorIndex = yArr(3) .RowHeight = yArr(5) .Font.Name = yArr(6) .Font.Size = yArr(7) End With If VBA.Len(yArr(4)) <> 0 Then '如果有邊框 r.Borders.LineStyle = 1 r.Borders.ColorIndex = yArr(4) Else r.Borders.LineStyle = 0 End If If VBA.Len(yArr(8)) <> 0 Then '如果有标題 s.Rows(1).Insert shift:=xlUp s.Range("A1").Resize(1, yArr(0)).Merge With s.Range("A1") .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .Value = yArr(8) End With End If End Sub

嚴格來說,每一段代碼都十分重要,沒有哪一段也不能完全實現過程,重點并不是代碼如何進行排列,問題是要對整個流程進行一個清晰的認識。

當對整個流程完全了解之後,用這些字母來創建一個過程,那麼就把一個實用的功能變成了事實,編程就是一個創建世界的過程,隻不過把每一個時間片段分開來研究,編碼之後變成真實的再現罷了。

歡迎關注、收藏

---END---

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
我們應該如何應對職業倦怠(我的工作究竟有什麼意義)
我們應該如何應對職業倦怠(我的工作究竟有什麼意義)
  本文字數 2500/ 閱讀需要 7 min   文 | 梁娟(簡單心理認證·新手咨詢師)   “大半的人在二十歲或三十歲上就死了。一過這個年齡,他們隻變了自己的影子。以後的生命不過是用來模仿自己,把以前真正有人味兒的時代所說的,所做的,所想的,所喜歡的,一天天的重複,而且重複的方式越來越機械,越來越脫腔走闆。”   ——《約翰·克裡斯多夫》羅曼·羅蘭  ...
2025-07-24
世界上最貴的五種水果(世界上最貴的水果)
世界上最貴的五種水果(世界上最貴的水果)
  在愛旅行的人心裡   看遍世界就是夢想   而對于吃貨來說   嘗遍世間美味才是終極目标   哪怕是水果   也想要嘗個遍      作為一枚“吃貨”   下面的水果你吃過幾種呢   黑皮西瓜   這種皮黑、光滑的西瓜據說有種特殊的甜味,僅生長于北海道,年産僅100個。      其中最貴的一個重達17磅(約合7.7公斤),在2008年拍出6100美元(...
2025-07-24
steam有款可以設置智商的遊戲(又一款燒腦的編程遊戲上線)
steam有款可以設置智商的遊戲(又一款燒腦的編程遊戲上線)
  要是小夥伴們喜歡什麼解謎、編程類遊戲,相信Steam上的《程序員升職記》應該都是綠了的遊戲,這款給宅男們設計智力遊戲能讓你享受到從底層到金字塔尖的感覺。而在8月24日,開發商又發售了一款新遊戲《7 Billion Humans》(70億人),遊戲設定的腦洞可比程序員大多了(同樣是先給宅男們的解謎、編程遊戲)。      在這款遊戲中玩家将獲得一個人力資源...
2025-07-24
張丹峰畢滢被曝深夜獨處三小時(張丹峰宣布畢滢辭職背後)
張丹峰畢滢被曝深夜獨處三小時(張丹峰宣布畢滢辭職背後)
  5月6日晚上,微博喜提了本月第一個“爆”熱點,張丹峰發文宣布畢滢辭職,并且把這段時間發生的所有事件向網友們具體交代了一下。         從張丹峰聲明來看,他全篇的口吻都比較委屈,稱自己這次被拍,是背後有人耍陰謀,他一定會追查清楚。      并且張丹峰還解釋了為何洪欣會删除微博,以及繼子張鎬濂為何會清空微博,他把這些歸結為巧合,稱和自己被拍這事并沒有...
2025-07-24
韓服男法師新職業二覺(韓服90級開放男法新轉職二覺及最新職業平衡)
韓服男法師新職業二覺(韓服90級開放男法新轉職二覺及最新職業平衡)
  摘要:16.08.16韓體驗服更新90級版本,此篇為版本細節講解,男法新轉職二覺及最新職業平衡   一.90級版本更新細節   [等級擴張]   * 等級上限擴張至90級。   [新增地區]   * 新增"metro中心"地區。   * 新增"魔界駐地, 中央公園" 城鎮。   - 可以進入至"魔界駐地" 城鎮地帶。   - 通過冒險家公會的城鎮移動,可...
2025-07-24
Copyright 2023-2025 - www.tftnews.com All Rights Reserved