作者paul60209 (我是保罗小小)
标题Re: [VBA ] 求解视窗输入问题
时间Sat Sep 15 13:13:55 2018
※ 引述《moom7887 (mm)》之铭言:
: 想利用VBA制作一个视窗输入,视窗会有两个字元输入方块,带入Excel A栏及B栏,程式
: 码目前写出来如下:
: r=Range(“A2”).End(xlDown).Row+1
: Cells(r,”A”)=TextBox1.Text
: Cells(r,”B”)=TextBox2.Text
: 但是一直没办法让输入的资料从A3开始,而且资料没办法自动换行,会一直被覆盖!
: 是哪个地方出错了吗,还是程式码可以怎麽写比较好,拜托帮忙了谢谢~
看起来问题分两块
1. 资料无法从A3写入
这题你只提供部分程式码,我不会通灵,所以也看不出来哪里有错,
但我猜你的巨集应该有跨工作表之类的,
建议你用with sheets(1)和end with把你的程式码包起来,这样比较不容易出错!
With sheets("工作表名称")
r=.Cells(1048576,"A").End(xlUp).Row
.Cells(r + 1,"A")=TextBox1.Text
.Cells(r + 1,"B")=TextBox2.Text
End With
另外,建议你End的参数尽量用(xlUp 或 xlToLeft),
原因是如果遇到资料中间有空白格时,你原先的方法会出错,
所以乾脆从最下面往上找,比较不会有问题~
提醒一下,1048576是Excel 2013以後的最後一个Row,
如果再更旧版的(副档名为.xls的),记得把1048576改成65536,
不然会超过索引范围,然後出错
2. 资料被覆盖
这部分看起来就是单纯程式设计上的粗心,
你的r只给一次,他算完後就停在r=3,
你也没写回圈,当然他每次回填值的时候都会把r=3直接带入,
所以你应该在cell那两行中间重新给r赋值,又或者多宣告一个变数~
With sheets("工作表名称")
r=.Cells(1048576,"A").End(xlUp).Row
.Cells(r + 1,"A")=TextBox1.Text
r=.Cells(1048576,"A").End(xlUp).Row
.Cells(r + 1,"B")=TextBox2.Text
End With
----
最後,如果我的回答没有解决到你的问题其实是正常的,
因为我也看不太懂你想问什麽,程式码也给一半,错误讯息、
excel档案格式设计啥都没有,下次有问题时,
或许你拿滑鼠在桌上敲三下,问土地公会比较快~~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.106.235
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1536988438.A.C03.html
1F:→ MOONRAKER: 滑鼠仙请回本位 09/16 01:39
2F:推 moom7887: Paul大谢谢你的解说及提醒! 09/17 23:50