最近在做相关的东西,由于刚开始学,所以有很多不懂,希望各位大哥大姐帮忙解决下,给个范例谢谢了。
1.当某个单元格为特定的值时,在指定的单元格内输入相关的数据(指定的单元格可以为多个),其实说白了就是一个条件语句,我直接用的IF...THEN...ELSE,但不知为什么,当不知道为什么输出的总是ELSE后面的,条件正确时和条件不正确时都一样。
2.当某两个单元格的值相等时(两个单元格分别由两个动态的参数控制,两列的不同行),在指定的位置输入特定的值,或者将由一个参数控制的单元格赋值到令一个单元格。
1.当某个单元格为特定的值时,在指定的单元格内输入相关的数据(指定的单元格可以为多个),其实说白了就是一个条件语句,我直接用的IF...THEN...ELSE,但不知为什么,当不知道为什么输出的总是ELSE后面的,条件正确时和条件不正确时都一样。
2.当某两个单元格的值相等时(两个单元格分别由两个动态的参数控制,两列的不同行),在指定的位置输入特定的值,或者将由一个参数控制的单元格赋值到令一个单元格。
begin
if OpenDialog1.Execute then
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.Open
(OpenDialog1.FileName,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0));
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Activesheet as _Worksheet);
ExcelApplication1.Cells.NumberFormatLocal:='@';
ExcelApplication1.Visible[0] :=True;
end;
var
row1 :integer ;
i :OleVariant;
begin
row1 :=4;
while(row1<49) do
begin
row1:=row1+1;
i:=row1;
//机号
ExcelWorksheet1.Cells.Item[i,8] :=ExcelWorksheet1.Cells.Item[i+78,38];
ExcelWorksheet1.Cells.Item[i,23] :=ExcelWorksheet1.Cells.Item[i+123,38];
//出港航班号
ExcelWorksheet1.Cells.Item[i,9] :=ExcelWorksheet1.Cells.Item[i+78,35];
ExcelWorksheet1.Cells.Item[i,24] :=ExcelWorksheet1.Cells.Item[i+123,35];
//预计起飞时间
ExcelWorksheet1.Cells.Item[i,12] :=ExcelWorksheet1.Cells.Item[i+78,39];
ExcelWorksheet1.Cells.Item[i,27] :=ExcelWorksheet1.Cells.Item[i+123,39];
//出港航线
ExcelWorksheet1.Cells.Item[i,11] :=ExcelWorksheet1.Cells.Item[i+78,37];
ExcelWorksheet1.Cells.Item[i,26] :=ExcelWorksheet1.Cells.Item[i+123,37];
//更改航线为中文
if (ExcelApplication1.Cells.Item[i,11].Value ='CAN') then
ExcelApplication1.Cells.Item[i,11].Value :='京/穗' else if (ExcelApplication1.Cells.Item[i,11].Value ='SZX') then
ExcelApplication1.Cells.Item[i,11].Value :='京/圳'
......
下面的代码是重复的,就省略了 //第二列
row1 :=4;
while(row1<strtoint(Edit1.Text)-123) do
begin
row1:=row1+1;
i:=row1;
if (ExcelApplication1.Cells.Item[i,26].Value ='SZX') then
ExcelApplication1.Cells.Item[i,26].Value :='京/圳' else if (ExcelApplication1.Cells.Item[i,26].Value ='SHE') then
ExcelApplication1.Cells.Item[i,26].Value :='京/沈' else if (ExcelApplication1.Cells.Item[i,26].Value ='DLC') then
ExcelApplication1.Cells.Item[i,26].Value :='京/连' else if (ExcelApplication1.Cells.Item[i,26].Value ='HRB') then
ExcelApplication1.Cells.Item[i,26].Value :='京/哈' 将某一列的数据先拷贝到某一列,然后再转化。
if语句需要加括号吗?好像没见过
对于Delphi调用Excel的操作,其实还是有很多地方值得我们大家去考虑的。虽然网上也有相关的资料,但基本上都是一样的,都是一个帖子被到处粘来粘去的,真正有价值的贴和资料也并不是很多。
真想要一本宝典,呵呵...
靠大家了。
***************************************************************************深有同感!最近俺也做一个关于EXCEL的软件,问题多多,还好现在终于完工了。看了你的代码,应该是没什么问题的,运行只有else后面的结果,说明if 条件不满足,看看参数传递有没有什么问题。另外问一下,你为什么要定义 i :OleVariant; 直接integer不好吗?
begin
.. 成立处理
end else
begin
..不成立处理
end;
或者更简单的办法,在excel里录个宏,看下vba自己的代码,拷过来就是了,这种方法任何困难都能解决
***************************************************************************深有同感!最近俺也做一个关于EXCEL的软件,问题多多,还好现在终于完工了。看了你的代码,应该是没什么问题的,运行只有else后面的结果,说明if 条件不满足,看看参数传递有没有什么问题。另外问一下,你为什么要定义 i :OleVariant; 直接integer不好吗?
*****************************************************************************
单元格的行列用OleVariant我是听我的一个朋友讲的,具体为什么我也不太清楚,应该是定义的原因吧,我开始用的也是Integer,执行时报错。
或者更简单的办法,在excel里录个宏,看下vba自己的代码,拷过来就是了,这种方法任何困难都能解决*************************************************************************************
关于VBA的相关知识我还不太懂,最近这段时间会看相关的内容。
谢谢各位了。