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