小春网

 找回密码
 注册账号
楼主: 陈酿
收起左侧

[IT 交流] 这段VBA代码怎么实现

[复制链接]
 楼主| 发表于 2011-12-11 18:40:13 | 显示全部楼层
sundf 发表于 2011-12-1 22:11
我把你的附件改了,还是不知道你的是多少,5?
把原来的remark sheet改个名字就可以了,不知道和你的要求 ...

这里的5 是什么 意思 ret = dosheet("Interior competition", "Exterior competition", "Remark", 5)
回复

使用道具 举报

发表于 2011-12-11 21:04:07 | 显示全部楼层
陈酿 发表于 2011-12-11 18:40
这里的5 是什么 意思 ret = dosheet("Interior competition", "Exterior competition", "Remark", 5) ...

就是Descolumncount啦,我随便写的sample,你的附件里正好是到5吧
回复

使用道具 举报

 楼主| 发表于 2011-12-11 21:50:50 | 显示全部楼层
sundf 发表于 2011-12-11 21:04
就是Descolumncount啦,我随便写的sample,你的附件里正好是到5吧

5 改成  Descolumncount 运行不通过,貌似是数据类型不匹配。。。。我这里是动态的,是不是加一个赋值就好了
回复

使用道具 举报

 楼主| 发表于 2011-12-11 22:03:32 | 显示全部楼层
sundf 发表于 2011-12-11 21:04
就是Descolumncount啦,我随便写的sample,你的附件里正好是到5吧

通过把 Descolumncount给f,f定义成了Interger 运行通过了,但是结果不对
回复

使用道具 举报

发表于 2011-12-11 22:42:15 | 显示全部楼层
Descolumncount是什么类型呀?
上次也是随便写了个,试了下和你添附的东西可以出来同样的结果。具体哪里不对呢?
回复

使用道具 举报

 楼主| 发表于 2011-12-11 23:02:29 | 显示全部楼层
sundf 发表于 2011-12-11 22:42
Descolumncount是什么类型呀?
上次也是随便写了个,试了下和你添附的东西可以出来同样的结果。具体哪里不 ...

计算结果不对,我dim f as interger  然后 f=Descolumncount 替换了5 ,结果两张相乘的结果不对
回复

使用道具 举报

 楼主| 发表于 2011-12-11 23:10:34 | 显示全部楼层
sundf 发表于 2011-12-11 22:42
Descolumncount是什么类型呀?
上次也是随便写了个,试了下和你添附的东西可以出来同样的结果。具体哪里不 ...
  1. Sub Remark()

  2. Dim myRng As Range
  3. Dim i As Long
  4. Dim j As Long
  5. Dim ret




  6. Worksheets("Exterior competition").Copy after:=Worksheets("Exterior competition")
  7.     ActiveSheet.Name = "Remark"
  8.     Worksheets("Remark").Activate
  9.     ActiveCell.CurrentRegion.Select
  10.    
  11.    
  12. ret = dosheet("Interior competition", "Exterior competition", "Remark", Descolumncount)
  13. End Sub

  14. Function dosheet(Sheet1 As String, Sheet2 As String, Sheet3 As String, descount As Integer)
  15. Dim StartRow, StartCol, EndRow, EndCol, tmpr, tmpc As Integer
  16. Dim f As Integer
  17. EndRow = Sheets(Sheet1).Cells.SpecialCells(xlLastCell).Row
  18. EndCol = Sheets(Sheet1).Cells.SpecialCells(xlLastCell).Column


  19. StartRow = 2
  20. StartCol = 2

  21. For tmpr = StartRow To EndRow
  22.     For tmpc = StartCol To EndCol
  23. 'descount-1????
  24.         If tmpc < Descolumncount Then
  25.             Sheets(Sheet3).Cells(tmpr, tmpc) = Sheets(Sheet1).Cells(tmpr, tmpc) * Sheets(Sheet2).Cells(tmpr, tmpc)
  26. Else
  27. '??COPY
  28.         Sheets(Sheet3).Cells(tmpr, tmpc) = Sheets(Sheet1).Cells(tmpr, tmpc)
  29.         End If
  30.     Next tmpc
  31. Next tmpr
  32. End Function
复制代码
回复

使用道具 举报

发表于 2011-12-12 00:15:52 | 显示全部楼层
太晚了,明天看,你能把你希望的结果和现在的结果告诉我吗?
回复

使用道具 举报

发表于 2011-12-12 02:21:46 | 显示全部楼层
Descolumncount不就是楼主在1楼说的那个 用来标记最后乘到哪一列的一个数吗
怎么后来越说越复杂 搞不懂Descolumncount到底是个啥了……{s:1:011}
回复

使用道具 举报

 楼主| 发表于 2011-12-12 14:50:15 | 显示全部楼层
sundf 发表于 2011-12-12 00:15
太晚了,明天看,你能把你希望的结果和现在的结果告诉我吗?

Baidu IME_2011-12-12_14-40-3.jpg

第一行的两张表的元素相乘,第二行的第一张表式现在的程序运行结果,想要的是第二张表的结果

回复

使用道具 举报

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

本版积分规则

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表