Excel精英培训网

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

[已解决]VBA 语言跨sheet 如何编写?

[复制链接]
发表于 2013-8-28 10:51 | 显示全部楼层 |阅读模式
本帖最后由 Claireji 于 2013-8-28 10:54 编辑

请教如下VBA语言跨sheet(例如提取的sheet1 里的数据保存到sheet2里)但是还在同一个excel 文件内,如何改写?非常感谢

程序如下:
Private Sub CommandButton1_Click()
    Dim arr
    Dim i, j, irow
        irow = Range("C65536").End(3).Row
        ReDim arr(1 To irow, 1 To 1)
            For i = 1 To irow
                If Cells(i, 4).Interior.ColorIndex = 36 Then
                    j = j + 1
                    arr(j, 1) = Cells(i, 4)
                End If
            Next
        Range("F1").Resize(j, 1) = arr
        
End Sub
最佳答案
2013-8-29 09:53
大体就是这样了

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-8-28 10:55 | 显示全部楼层
本帖最后由 我心飞翔410 于 2013-8-28 10:58 编辑

for each sh in worksheets   对同一工作表进行循环 另外你的代码可以优化哈
Private Sub CommandButton1_Click()
    Dim arr
    Dim i, j, irow
        arr =range("c1:c"& Range("C65536").End(3).Row
            For i = 1 To ubound(arr)
                If Cells(i, 4).Interior.ColorIndex = 36 Then
                    j = j + 1
                    arr(j, 1) = Cells(i, 4)
                End If
            Next
        Range("F1").Resize(j, 1) = arr
        
End Sub
另外达到你的要求最好上个附件 带详细说明
回复

使用道具 举报

 楼主| 发表于 2013-8-28 14:11 | 显示全部楼层
我心飞翔410 发表于 2013-8-28 10:55
for each sh in worksheets   对同一工作表进行循环 另外你的代码可以优化哈
Private Sub CommandButton1_ ...

谢谢你,我把附近附上,我实际使用的一个excel 中有很多sheet, 但是我只要从sheet1 中取数据到后面一个sheet2 里,是否可以定义提取数据的范围就在sheet1里面呢?哈哈~我是个初学者,就麻烦你啦~

sample2.zip

12.57 KB, 下载次数: 3

回复

使用道具 举报

发表于 2013-8-28 14:16 | 显示全部楼层
是全部提取还是怎么说啊 你的有个要求啊 vba可以实现的提取指定的区域  问题就是你要表达清楚
回复

使用道具 举报

发表于 2013-8-28 14:31 | 显示全部楼层
看看是这样不 代码还可以优化 就看你实际需要了

sample2.zip

12.32 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2013-8-28 15:11 | 显示全部楼层
我心飞翔410 发表于 2013-8-28 14:31
看看是这样不 代码还可以优化 就看你实际需要了

我把你给的代码修改应用到我的文件后,发生了错误。麻烦帮忙看看哦~

我的目的是要将Sheet D 里的C 列黄色底纹的数据连续提取到sheet "Date from Sheet D"里的 E列。

另外,你说代码可以优化,请指出。

点评

不是你这附件也不全 还有就是 工作表名你要对应 看你需要 最好整理哈 你的思路 好好表达清楚  发表于 2013-8-28 15:13
回复

使用道具 举报

发表于 2013-8-28 15:14 | 显示全部楼层
Claireji 发表于 2013-8-28 15:11
我把你给的代码修改应用到我的文件后,发生了错误。麻烦帮忙看看哦~

我的目的是要将Sheet D 里的C 列黄 ...

传原始附件表达清楚
回复

使用道具 举报

 楼主| 发表于 2013-8-29 08:44 | 显示全部楼层
我心飞翔410 发表于 2013-8-28 15:14
传原始附件表达清楚

这是原始文件,拜托看看~

sample3.zip

67.71 KB, 下载次数: 4

回复

使用道具 举报

发表于 2013-8-29 09:23 | 显示全部楼层
本帖最后由 ligh1298 于 2013-8-29 09:25 编辑
  1. Private Sub CommandButton1_Click()
  2.     Dim arr
  3.     Dim i, j, irow
  4.     Sheets("date from sheet D").Range("e:e").ClearContents
  5.     With Sheets("D")
  6.         arr = .Range("c1:c" & .Range("C65536").End(3).Row)
  7.             For i = 1 To UBound(arr)
  8.                 If Cells(i, 4).Interior.ColorIndex = 36 Then
  9.                     j = j + 1
  10.                     arr(j, 1) = Cells(i, 4)
  11.                 End If
  12.             Next
  13.         Sheets("date from sheet D").Range("e1").Resize(j, 1) = arr
  14.         End With
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2013-8-29 09:53 | 显示全部楼层    本楼为最佳答案   
大体就是这样了

sample3.rar

67.28 KB, 下载次数: 5

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 22:32 , Processed in 0.289934 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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