Re: [VBA ] 求解视窗输入问题

楼主: paul60209 (我是保罗小小)   2018-09-15 13:13:55
※ 引述《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
作者: MOONRAKER (㊣牛鹤鳗毛人)   2018-09-16 01:39:00
鼠标仙请回本位
作者: moom7887 (mm)   2018-09-17 23:50:00
Paul大谢谢你的解说及提醒!

Links booklink

Contact Us: admin [ a t ] ucptt.com