Redian新闻
>
请教VBA大侠,为什么用loop就出错,写开了是通的。请问错在哪里了?Thank you
avatar

请教VBA大侠,为什么用loop就出错,写开了是通的。请问错在哪里了?Thank you

ILuvSunshine
楼主 (北美华人网)
VBA小白一个.
请看图。
任务是把数据从一个workbook copy到另一个workbook(另一个有设好的formatting)
Many thanks!
avatar
ILuvSunshine
2 楼
上图不行,run time error, mismatch type,下图works
avatar
fxiyz
3 楼
问chatgpt啊
avatar
therealabcdefg
4 楼
到底是上图work,还是下图?标题说loop不work。你的上图是loop
avatar
ILuvSunshine
5 楼
回复 4楼 therealabcdefg 的帖子
谢谢指正,改过来了。
期间这种问题怎么问chatgpt?就像帖子里这样问吗?
avatar
therealabcdefg
6 楼
你的loop里面,ws是worksheet。但在下图里是string。你试试将ws定义成string。在string里loop。我也只是略知一二。
avatar
理查德
7 楼
   把ws改成ws.Name试一试。 我试了可以。
 wbsource.Worksheets(ws.Name).Range("A44:A2385").Copy     wbtarget.Worksheets(ws.Name).Range("A3").PasteSpecial Paste:=xlPasteValues
完整的: Sub CopySheet()
  Dim wbsource As Workbook   Dim wbtarget As Workbook   Dim ws As Worksheet       '' Open source workbook   Set wbsource = Workbooks.Open("C:\Users\David\Documents\A.xlsx")       '' Open target workbook   Set wbtarget = Workbooks.Open("C:\Users\David\Documents\B.xlsx")       '' Loop through each worksheet in the array   For Each ws In wbtarget.Sheets(Array("P1", "P2"))     '' Copy data from source workbook to target workbook     wbsource.Worksheets(ws.Name).Range("A44:A2385").Copy     wbtarget.Worksheets(ws.Name).Range("A3").PasteSpecial Paste:=xlPasteValues   Next ws       '' Close the source workbook   wbsource.Close SaveChanges:=False       '' Close the target workbook   wbtarget.Close SaveChanges:=True       MsgBox "Data copied successfully!", vbInformation
End Sub
avatar
ILuvSunshine
8 楼
THANK YOU SO MUCH for your help @理查德!!! You saved my day!!
avatar
ILuvSunshine
9 楼
therealabcdefg 发表于 2024-03-08 14:03
你的loop里面,ws是worksheet。但在下图里是string。你试试将ws定义成string。在string里loop。我也只是略知一二。

You definitely know more than I do! Thanks too!
avatar
ILuvSunshine
10 楼
现在下班了,手机上打中文方便多了,多说几句,我上面的loop 办法是从stack exchange 上抄来的,看来不行啊,还是华人上能人厉害!
avatar
理查德
11 楼
ILuvSunshine 发表于 2024-03-08 15:08
现在下班了,手机上打中文方便多了,多说几句,我上面的loop 办法是从stack exchange 上抄来的,看来不行啊,还是华人上能人厉害!

别客气
avatar
me2me2
12 楼
不会VB,但是很想知道GPT回答的对不对:
你的VBA代码中使用了For Each循环来遍历工作表,并且试图将特定的单元格范围从一个工作簿复制到另一个工作簿。然而,从你提供的图片中,代码在执行循环时出现了错误,而直接写出工作表名称的方式却可以正常工作。 出错的原因可能有几个: Sheets数组:在For Each ws In Sheets(Array("P1", "P2"))这一行代码中,你没有指定Sheets属于哪个工作簿。如果这两个工作表"P1"和"P2"是在wbSource工作簿中,那么你应该使用wbSource.Sheets。 变量作用域:如果"P1"和"P2"不在相同的工作簿中,你需要确保对应的工作表引用正确。比如,如果"P1"在wbSource中而"P2"在wbTarget中,你不能在同一个循环中处理它们。 Worksheet对象:在第一张图中,你使用ws变量,但在定义它的那一行前面有一个单引号,这表示这行是被注释掉的。所以,ws没有被正确地定义为Worksheet对象,这将导致运行时错误。 为了解决这些问题,你可以尝试以下修改:
Sub CopySheet()
Dim wbSource As Workbook Dim wbTarget As Workbook Dim ws As Worksheet
Set wbSource = Workbooks.Open("file A.xlsx") Set wbTarget = Workbooks.Open("file B.xlsx")
' Assuming that the sheets "P1" and "P2" are in wbSource For Each ws In wbSource.Sheets(Array("P1", "P2"))
  ' Copy range to clipboard   ws.Range("A44:Z385").Copy
  ' PasteSpecial to paste values, formulas, formats, etc.   ' Assuming you want to paste to the same sheet names in wbTarget   wbTarget.Worksheets(ws.Name).Range("A3").PasteSpecial Paste:=xlPasteValues
Next ws
End Sub

请确保"P1"和"P2"都在wbSource中,并且在wbTarget中有相同名称的工作表,且这些工作表已经打开。如果这些工作表不在同一个工作簿中,你需要分别指定它们的工作簿。此外,确保去掉了Dim ws As Worksheet前面的单引号。
avatar
me2me2
13 楼
ILuvSunshine 发表于 2024-03-08 13:58
回复 4楼 therealabcdefg 的帖子
谢谢指正,改过来了。
期间这种问题怎么问chatgpt?就像帖子里这样问吗?

avatar
therealabcdefg
14 楼
chatGPT写程序还为时尚早。会一本正经的胡说八道,还会自己瞎编一些keyword。其实lz的问题很简单。就是因为在loop中,worksheets()里面的参数应该是一个string,不应该是worksheet。
相关阅读
10份葡西独自游之“欧来欧去”【新春对对碰】暖场《How Do You Do》ft. 大咖女神老师果然是喝醉了导致的,问题是她最后的“i love you”电话怎么是打给朋友而不是家人的呢?I SEE YOUYOU'RE AN ILLINI!再厉害的神龙大侠,也挡不住剧本拉胯温铁军对在哪?错在哪?错误的根源是什么?行山者Allan:独裁者的最后人生孙思邈的养生十要【新春对对碰】“All I Ask Of You” 男女声自碰 by 云起“Where are you from?” 是歧视?回答别人问“Where are you from ?" 很多不是问来源国,你可以这样回答本大叔经常问别人 where are you from?世纪同框!赵本山说了句大侠,北野武回了声多谢新年首款ThinkBook即将上市,ThinkBook 14+/16+ 2024焕新预售天天被人罵的美國這回能贏嗎?从历史不曾着墨之处,小说书写开始了 | 一周荐书枫林音乐:你 YouAPAD: You cannot unread a book :+) ~~~~~~APAD:if you pay peanuts, you get monkeys王家卫版《繁花》结局繁花APAD:You are what you think.Valentine's Day or Ash Wednesday, which do you observe or长篇小说《谷雨立夏间》51 恐怖枪击hé bàng?hé bèng?热烈祝贺新春大串烧圆满成功!再碰瓷AI,狮王主题曲【Can you feel the love tonight】APAD:Fake it till you make it每天一则英语笑话:did you close your garage door 啥意思?No one can make you feel inferior without your consent事急从权Keep your friends close, and your enemies closer“错了是经历,对了是幸运”Rap:Don’t touch her You are not the same ageDrop by drop, you fill the bucketAPAD:When life gives you lemons, make lemonade市区South Loop房源SL12 | 不收中介费/South Loop黄金地段/密歇根湖畔精品豪华公寓市区South Loop房源SL15 | 不收中介费/South Loop黄金位置/LEED认证傅小田的天上人间地狱式的““幸福生活”巴塞罗那农贸市场【听歌练听力】I Just Want To Dance With You
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。