【急急急】关于夸表执行宏命令
时间:2011-09-17
来源:互联网
我的宏命令在A表里面,然后在A表中把宏命令加到菜单栏的按钮上了,这样打开其他的excel都有这个按钮.(为了防止一次次导入模块的麻烦操作)
我要处理B表的东西,只打开B表,点击按钮,宏命令默认打开A表,
结果直接处理A表了
怎样做才能在B表中使用宏命令能处理B表的内容呢!
上代码
VB code
我要处理B表的东西,只打开B表,点击按钮,宏命令默认打开A表,
结果直接处理A表了
怎样做才能在B表中使用宏命令能处理B表的内容呢!
上代码
VB code
Sub WebDiv() '将Researchercomments中的nonthingnew分离出来 Dim i, finalColume As Integer Dim aRow, aColume As Integer Dim bRow As Integer ThisWorkbook.Worksheets(1).Activate aRow = Range("A1").CurrentRegion.Cells.Rows.Count '有效单元格的行数 aColume = Range("A1").CurrentRegion.Cells.Count / aRow '有效单元格的列数 '查找表头的"ResearcherComments"项 finalColume = 0 For i = 1 To aColume If Trim(ActiveSheet.Cells(1, i)) = "ResearcherComments" Then finalColume = i ActiveSheet.Name = "Test Sheet1" ActiveSheet.Rows("1:1").Select ActiveSheet.Rows("1:1").Copy If ThisWorkbook.Worksheets.Count < 2 Then ThisWorkbook.Worksheets.Add after:=ThisWorkbook.Worksheets(1) End If ThisWorkbook.Worksheets(2).Activate ActiveSheet.Cells(1, 1).Select ActiveSheet.Paste ActiveSheet.Name = "NoProjects" ThisWorkbook.Worksheets(1).Activate Exit For End If Next i If finalColume = 0 Then Exit Sub '如果查找不到表头的"ResearcherComments"则终止程序 bRow = 1 For i = 2 To aRow If i > aRow Then Exit For If Trim(ActiveSheet.Cells(i, finalColume)) = "Nothing New" Then ActiveSheet.Rows(Trim(i) & ":" & Trim(i)).Select ActiveSheet.Rows(Trim(i) & ":" & Trim(i)).Cut ThisWorkbook.Worksheets(2).Activate ActiveSheet.Cells(bRow + 1, 1).Select ActiveSheet.Paste bRow = bRow + 1 ThisWorkbook.Worksheets(1).Activate ActiveSheet.Rows(Trim(i) & ":" & Trim(i)).Select '选中原先的空行(剪切并粘贴后变成空行) ActiveSheet.Rows(Trim(i) & ":" & Trim(i)).Delete Shift:=xlUp '删除,并将表格往上提 aRow = aRow - 1 End If Next End Sub
作者: xiaolinyouni 发布时间: 2011-09-17
将宏命令不要放在A表里,要放在公共模块里,属性为 Public,即
Public Sub WebDiv()
Public Sub WebDiv()
作者: z_wenqian 发布时间: 2011-09-17
唉,csdn没人回答,excel home也没人回答,只好自己动脑,喂鸟吃食了.
在B中打开A的宏命令结果操作A表,
那么我在A中打开宏命令并指定B表,就可以了
代码如下
VB code
楼下散分
在B中打开A的宏命令结果操作A表,
那么我在A中打开宏命令并指定B表,就可以了
代码如下
VB code
Sub WebDiv() '将Researchercomments中的nonthingnew分离出来 Application.ScreenUpdating = False '关闭屏幕刷新 Dim i, finalColume As Integer 'i循环变量,finalcolume记录ResearcherComments的列数 Dim aRow, aColume, bRow As Integer 'sheet1的行数列数,sheet2的行数 Dim aPath As String '目标路径 ''''''''''''''''''''''选择路径'''''''''''''''''''''''''''''' Dim MyDialog As FileDialog Set MyDialog = Application.FileDialog(msoFileDialogFilePicker) '定义一个打开文件对话框 With MyDialog .Filters.Add "EXCEL", "*.xls", 1 '筛选excel .AllowMultiSelect = False '如果允许用户选定多个文件或者文件夹,则为TRUE If .Show = -1 Then '如果选择不为空 aPath = .SelectedItems(1) '提取第一个选中文件的路径 Else Exit Sub '如果没有选择文件则退出程序 End If End With Dim myBook As Workbook Dim mySheet As Worksheet Set myBook = Application.Workbooks.Open(aPath) '打开excel Set mySheet = myBook.Worksheets(1) mySheet.Activate '激活sheet1 aRow = mySheet.Range("A1").CurrentRegion.Cells.Rows.Count '有效单元格的行数 aColume = mySheet.Range("A1").CurrentRegion.Cells.Count / aRow '有效单元格的列数 '查找表头的"ResearcherComments"项 finalColume = 0 For i = 1 To aColume If Trim(mySheet.Cells(1, i)) = "ResearcherComments" Then finalColume = i mySheet.Name = "Test Sheet1" '重命名sheet1 mySheet.Rows("1:1").Select '复制表头 mySheet.Rows("1:1").Copy If myBook.Worksheets.Count < 2 Then '判断是否存在sheet2,否则新建 myBook.Worksheets.Add after:=myBook.Worksheets(1) End If myBook.Worksheets(2).Activate '激活sheet2 myBook.Worksheets(2).Cells(1, 1).Select myBook.Worksheets(2).Paste '粘贴表头 myBook.Worksheets(2).Name = "NoProjects" '重命名sheet2 mySheet.Activate '激活sheet1 Exit For End If Next i If finalColume = 0 Then Exit Sub '如果查找不到表头的"ResearcherComments"则终止程序 bRow = 1 For i = 2 To aRow If i > aRow Then Exit For '特殊的结束情况 If Trim(mySheet.Cells(i, finalColume)) = "Nothing New" Then '查找Nothing New mySheet.Rows(Trim(i) & ":" & Trim(i)).Select mySheet.Rows(Trim(i) & ":" & Trim(i)).Cut '剪切行 myBook.Worksheets(2).Activate '激活sheet2 myBook.Worksheets(2).Cells(bRow + 1, 1).Select myBook.Worksheets(2).Paste '粘贴 bRow = bRow + 1 '统计sheet2的行数 mySheet.Activate '激活sheet1 mySheet.Rows(Trim(i) & ":" & Trim(i)).Select '选中原先的空行(剪切并粘贴后变成空行) mySheet.Rows(Trim(i) & ":" & Trim(i)).Delete Shift:=xlUp '删除,并将表格往上提 aRow = aRow - 1 'sheet1行数减1 End If Next Application.ScreenUpdating = True '恢复屏幕刷新 End Sub
楼下散分
作者: xiaolinyouni 发布时间: 2011-09-17
引用 1 楼 z_wenqian 的回复:
将宏命令不要放在A表里,要放在公共模块里,属性为 Public,即
Public Sub WebDiv()
将宏命令不要放在A表里,要放在公共模块里,属性为 Public,即
Public Sub WebDiv()
公共模块在哪里?..

作者: xiaolinyouni 发布时间: 2011-09-17
引用 1 楼 z_wenqian 的回复:
将宏命令不要放在A表里,要放在公共模块里,属性为 Public,即
Public Sub WebDiv()
将宏命令不要放在A表里,要放在公共模块里,属性为 Public,即
Public Sub WebDiv()
貌似EXCEL没有公共模块啊,Word有个Normal.dot可以放公共模块,excel怎么放
作者: xiaolinyouni 发布时间: 2011-09-17
劫个分……
作者: yiguangqiang88 发布时间: 2011-09-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28