EXECL单元格(50分)

  • 主题发起人 主题发起人 seilfer
  • 开始时间 开始时间
S

seilfer

Unregistered / Unconfirmed
GUEST, unregistred user!
我这样写 showmessage(excel1.activesheet.cells[j,1].value);可以看到显示为1
但这样写 if excel1.activesheet.cells[j,1].value='1' then ....
或 if excel1.activesheet.cells[j,1].value= 1 then 。。。。 程序就报错
EVARINT ERROR : invalid variant operation 该怎么改呢?
 
看看有没有帮助 :-) 在操作Excel时,我都是动态创建的。
var
Sheet:variant;
XLApp:variant;
begin
..
XLApp:=CreateOLeObject('Excel.Application');
....
Sheet:=XLApp.WorkBooks[1].WorkSheets['sheet1'];
if Sheet.cells[j,1]=1 then.....
end;
 
>>excel1.activesheet.cells[j,1].value = 1
把".value"去掉试试.
.value 可以进行自动的类型识别, 可能这个CELL[]中的数据类型不是string型的所以报错。
 
我的是动态创建的,我试过了,去掉VALUE仍然出错,谁有解决的办法?
 
用vartostr函数转换
 
我试了一下。
V.ActiveSheet.cells[1,1].value :=1;
是行的通的。这说明,问题出在cells[j,1]上,这个地方错了。
不知道你是什么意思。是对J列1行的这个CELL进行操作,还是想对一个RANGE进行操作呢?
 
如果是对CELL ,按照你的要求,可把cells[j,1]写为cells[10,1]

也就是
excel1.activesheet.cells[10,1].value= 1 then
我试了,是对的
 
我也碰到同样的问题。
就是说,对1列i行的cell中内容进行判断,如是否为某个字符串。
 
我也碰到同样的问题,用了一点时间才解决了这个问题!
可以这样写:
if excel1.activesheet.cells.Item[j,1].Value= 1 then
.........
 
更正:
应是 if excel1.activesheet.cells.Item[j,1].Value= ‘1 ’then
.........
 
如果单元格中的内容为 'ABCD',以下的写法还会正确吗?
if excel1.activesheet.cells.Item[j,1].Value= 1 then
 
是一样正确的,你有没有自己试过?
excel1.activesheet.cells.Item[j,1].Value:=‘abcd’;
if excel1.activesheet.cells.Item[j,1].Value=‘abcd’then
showmessage(excel1.activesheet.cells.Item[j,1].Value);
 
是这样会不会出错,你在判断前怎么可以知道“ABCD”,
如果知道还去判断干吗?????????
excel1.activesheet.cells.Item[j,1].Value:=‘abcd’;
if excel1.activesheet.cells.Item[j,1].Value=1 then ////// 111111
showmessage(excel1.activesheet.cells.Item[j,1].Value);
 
vartostr 就没问题了,早就试过了!
 
多人接受答案了。
 
后退
顶部