2023-02-12 05:14来源:m.sf1369.com作者:宇宇
Private Sub Command1_Click()
Dim strChar As String
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject(Excel.Application)
Set xlBook = xlApp.Workbooks.Add
xlApp.Visible = True
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Activate
xlSheet.Range(b1) = 测试数据 '测试用的,对你所提问没有没有关系
xlSheet.Range(b1:b15).Merge '测试用的,对你所提问没有没有关系,合并单元格(B1;b15)
xlSheet.Range(b1:b15).UnMerge '分解单元格,原内容自动填充到分解后的第一单元格.这句也是你问题的答案,不过你要根据你的具体情况改变“(b1:b15)”
xlSheet.Range(c:c).Merge '测试用的,对你所提问没有没有关系
xlSheet.Range(c:c).UnMerge '这句是你的第二问的答案。具体含义是拆分第C列,这句也要根据你的具体情况改变“(c:c)”,既把引号内的括号内的c改成其他英文字母。
Set xlBook = Nothing
xlApp.Quit
End Sub
备注:我用的excel2007,excel2003应该一样。给你说一个小技巧,你用VBA技术时,你可以先录制一个宏,然后在宏的基础上和你的具体需要更改你录制的宏代码,然后复制到你写的代码中就可以了,不过前提是你知道一些VBA基础知识。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, cc As Range, c0 As Range, FontNm$, FontSz%
'------请按后面说明设置下面的变量-----
Set c0 = Range(A1) '控制的单元格 ,可以为区域
FontNm = 楷体 '控制的字体
FontSz = 20 '控制的字号
'------设置变量结束-----
On Error Resume Next
Application.EnableEvents = False
For Each c In Target
For Each cc In c0
If cc.Address = c.Address Then
With c.Font
.Name = FontNm
.Size = FontSz
End With
End If
Next
Next
Application.EnableEvents = True
End Sub
---------
操作:
在sheet表的名字上,右键,查看代码,将上面的代码复制入打开的代码窗中(当前sheet的代码窗),返回sheet表就可以了
'代码放在工作簿A的表1里,c控制复制的列数,d控制双击的列
Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cl As Boolean)
c = 5: d = 1
If T.Column <> d Then Exit Sub
Workbooks(B).Sheets(表1).Cells(T.Row, 1).Resize(, c) = T.Resize(, c).Value
End Sub