Excel精英培训网

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

[已解决]为何下面这段代码我想进行简化的总是出错?

[复制链接]
发表于 2015-2-21 20:02 | 显示全部楼层 |阅读模式
本帖最后由 tinytiger 于 2015-2-21 20:30 编辑

原来的代码:
    ActiveSheet.Range("B4").Select   
    ActiveCell.FormulaR1C1 = "='1月份奖金分配表'!RC[12]"
    ActiveSheet.Range("C4").Select
    ActiveCell.FormulaR1C1 = "='2月份奖金分配表'!RC[11]"
    ActiveSheet.Range("D4").Select
    ActiveCell.FormulaR1C1 = "='3月份奖金分配表'!RC[10]"
    ActiveSheet.Range("E4").Select
    ActiveCell.FormulaR1C1 = "='4月份奖金分配表'!RC[9]"
    ActiveSheet.Range("F4").Select
    ActiveCell.FormulaR1C1 = "='5月份奖金分配表'!RC[8]"
    ActiveSheet.Range("G4").Select
    ActiveCell.FormulaR1C1 = "='6月份奖金分配表'!RC[7]"
    ActiveSheet.Range("H4").Select
    ActiveCell.FormulaR1C1 = "='7月份奖金分配表'!RC[6]"
    ActiveSheet.Range("I4").Select
    ActiveCell.FormulaR1C1 = "='8月份奖金分配表'!RC[5]"
    ActiveSheet.Range("J4").Select
    ActiveCell.FormulaR1C1 = "='9月份奖金分配表'!RC[4]"
    ActiveSheet.Range("K4").Select
    ActiveCell.FormulaR1C1 = "='10月份奖金分配表'!RC[3]"
    ActiveSheet.Range("L4").Select
    ActiveCell.FormulaR1C1 = "='11月份奖金分配表'!RC[2]"
    ActiveSheet.Range("M4").Select
    ActiveCell.FormulaR1C1 = "='12月份奖金分配表'!RC[1]"

我想简化成以下代码:
      dim i%,j%
      For i = 1 To 12
        For j = 12 To 1 Step -1
          ActiveSheet.Cells(4, i + 1).Select
          ActiveCell.FormulaR1C1 = "= ''" & i & "月份奖金分配表''!RC[" & j & "]"
      Next j
    Next i
原来的代码运行没有错误,但是很繁琐,但运行简化后的代码时总是出现以下错误:应用程序定义或对象定义错误,停止在红色字体这一行,这是什么原因,求各位老师指点一下!
最佳答案
2015-2-21 22:26
本帖最后由 刘苏 于 2015-2-21 22:31 编辑
  1. Sub SetMonth()
  2. Dim Rng As Range, RCount As Integer
  3. Set Rng = Selection.Resize(1, 12)
  4. RCount = 1
  5. For Each Rng In Rng
  6.     Rng.FormulaR1C1 = "='" & RCount & "月份奖金分配表'!RC[" & 13 - RCount & "]"
  7.     RCount = RCount + 1
  8. Next
  9. End Sub
复制代码
以所选区域第一个单元格为基准填入公式。
发表于 2015-2-21 22:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 刘苏 于 2015-2-21 22:31 编辑
  1. Sub SetMonth()
  2. Dim Rng As Range, RCount As Integer
  3. Set Rng = Selection.Resize(1, 12)
  4. RCount = 1
  5. For Each Rng In Rng
  6.     Rng.FormulaR1C1 = "='" & RCount & "月份奖金分配表'!RC[" & 13 - RCount & "]"
  7.     RCount = RCount + 1
  8. Next
  9. End Sub
复制代码
以所选区域第一个单元格为基准填入公式。
回复

使用道具 举报

发表于 2015-2-21 22:43 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-2-21 23:09 | 显示全部楼层
本帖最后由 tinytiger 于 2015-2-21 23:11 编辑
刘苏 发表于 2015-2-21 22:43
错误的地方,感觉是 引号

非常感谢~~~~,而且您给出的答案更为简洁!
回复

使用道具 举报

 楼主| 发表于 2015-2-22 01:33 | 显示全部楼层
本帖最后由 tinytiger 于 2015-2-22 15:03 编辑

麻烦刘老师再给看一下,质量与安全管理指标汇总表下的代码该怎么简化?
回复

使用道具 举报

 楼主| 发表于 2015-2-22 15:02 | 显示全部楼层
自己解决了,多些版主的指导!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 19:04 , Processed in 0.431193 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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