Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3680|回复: 7

[已解决]我想采用模块代码写入到2个工作表vb窗口,下面代码如何修改?

[复制链接]
发表于 2012-3-21 13:42 | 显示全部楼层 |阅读模式
我想采用模块代码写入到2个工作表vb窗口,下面代码如何修改?
Sub 向指定工作表写入代码()
Dim sh As Worksheet
Dim Code As String
    Code = ""
    Code = Code & "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf
    Code = Code & "If Intersect(Target(1), Columns(""A:D"")) Is Nothing Then Exit Sub" & vbCrLf'在这里写入代码
    Code = Code &"Sheets(""概算表"").Cells(Target(1).Row, Target(1).Column) = Target" & vbCrLf ',使两个工作表内容同步
    Code = Code & "End Sub" & vbCrLf
For Each sh In ThisWorkbook.Worksheets
       If Not sh.Name <> "概算调整" Then
              With ActiveWorkbook.VBProject.VBComponents(sh.CodeName).CodeModule
                           NextLine = .CountOfLines + 1
                           .InsertLines NextLine, Code
              End With
        'sh.Visible = False '要使这N张表都处于隐藏状态可在此加入此句
       End If
Next
End Sub
最佳答案
2012-3-21 15:06
  1. Sub 向指定工作表写入代码()
  2.     Dim sh As Worksheet
  3.     Dim Code1$, Code2$
  4.     第一个工作表名称 = "Sheet1"
  5.     第二个工作表名称 = "Sheet2"
  6.     Code1 = ""
  7.     Code1 = Code1 & "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf
  8.     Code1 = Code1 & "If Intersect(Target(1), Columns(""A:D"")) Is Nothing Then Exit Sub" & vbCrLf    '在这里写入代码
  9.     Code1 = Code1 & "Sheets(""概算表"").Cells(Target(1).Row, Target(1).Column) = Target" & vbCrLf    ',使两个工作表内容同步
  10.     Code1 = Code1 & "End Sub" & vbCrLf
  11.     Code2 = ""
  12.     Code2 = Code2 & "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf
  13.     '..........
  14.     '..........
  15.     Code2 = Code2 & "End Sub" & vbCrLf
  16.     For Each sh In ThisWorkbook.Worksheets
  17.         If sh.Name = 第一个工作表名称 Then
  18.             With ActiveWorkbook.VBProject.VBComponents(sh.CodeName).CodeModule
  19.                 NextLine = .CountOfLines + 1
  20.                 .InsertLines NextLine, Code1
  21.             End With
  22.         End If
  23.         If sh.Name = 第二个工作表名称 Then
  24.             With ActiveWorkbook.VBProject.VBComponents(sh.CodeName).CodeModule
  25.                 NextLine = .CountOfLines + 1
  26.                 .InsertLines NextLine, Code2
  27.             End With
  28.         End If
  29.     Next
  30. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
kongtong3 + 1 很少见的向sheet写入code的vba项目,对初、.

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-3-21 13:47 | 显示全部楼层
回复

使用道具 举报

发表于 2012-3-21 13:49 | 显示全部楼层
修改这一句;
If sh.Name =第一个工作表名称 or   sh.Name =第二个工作表名称 Then
回复

使用道具 举报

 楼主| 发表于 2012-3-21 14:34 | 显示全部楼层
zjdh 发表于 2012-3-21 13:49
修改这一句;
If sh.Name =第一个工作表名称 or   sh.Name =第二个工作表名称 Then

老师!
向两个工作表写入不同的代码
回复

使用道具 举报

发表于 2012-3-21 15:06 | 显示全部楼层    本楼为最佳答案   
  1. Sub 向指定工作表写入代码()
  2.     Dim sh As Worksheet
  3.     Dim Code1$, Code2$
  4.     第一个工作表名称 = "Sheet1"
  5.     第二个工作表名称 = "Sheet2"
  6.     Code1 = ""
  7.     Code1 = Code1 & "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf
  8.     Code1 = Code1 & "If Intersect(Target(1), Columns(""A:D"")) Is Nothing Then Exit Sub" & vbCrLf    '在这里写入代码
  9.     Code1 = Code1 & "Sheets(""概算表"").Cells(Target(1).Row, Target(1).Column) = Target" & vbCrLf    ',使两个工作表内容同步
  10.     Code1 = Code1 & "End Sub" & vbCrLf
  11.     Code2 = ""
  12.     Code2 = Code2 & "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf
  13.     '..........
  14.     '..........
  15.     Code2 = Code2 & "End Sub" & vbCrLf
  16.     For Each sh In ThisWorkbook.Worksheets
  17.         If sh.Name = 第一个工作表名称 Then
  18.             With ActiveWorkbook.VBProject.VBComponents(sh.CodeName).CodeModule
  19.                 NextLine = .CountOfLines + 1
  20.                 .InsertLines NextLine, Code1
  21.             End With
  22.         End If
  23.         If sh.Name = 第二个工作表名称 Then
  24.             With ActiveWorkbook.VBProject.VBComponents(sh.CodeName).CodeModule
  25.                 NextLine = .CountOfLines + 1
  26.                 .InsertLines NextLine, Code2
  27.             End With
  28.         End If
  29.     Next
  30. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
hcy1185 + 1 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-3-21 15:26 | 显示全部楼层
本帖最后由 hcy1185 于 2012-3-21 15:42 编辑
zjdh 发表于 2012-3-21 15:06

老师!
Target(1)是什么意思?
写在两个工作表的代码,过程名一样可以吗?
回复

使用道具 举报

发表于 2012-3-21 16:41 | 显示全部楼层
hcy1185 发表于 2012-3-21 15:26
老师!
Target(1)是什么意思?
写在两个工作表的代码,过程名一样可以吗?


Target(1)是你的宏中写的!
在这里它的意思是CHANGE区域的第一个单元,一般是左上角。
写在两个工作表的代码,过程名可以一样。

评分

参与人数 1 +1 收起 理由
hcy1185 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-3-21 17:39 | 显示全部楼层
zjdh 发表于 2012-3-21 16:41
Target(1)是你的宏中写的!
在这里它的意思是CHANGE区域的第一个单元,一般是左上角。
写在两个工作表 ...

非常感谢老师的指导!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 07:56 , Processed in 0.264902 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表