乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何通过VBA把一个单元格内容读取到另单元格?-c读取excel单元格,excel截取单元格部分数据

如何通过VBA把一个单元格内容读取到另单元格?-c读取excel单元格,excel截取单元格部分数据

作者:乔山办公网日期:

返回目录:excel表格制作


不知这样的效果如何?文件在附e79fa5e98193e58685e5aeb9330件,代码片段在下方:

LPXLOPER Add(LPXLOPER x1,LPXLOPER x2)
{
 if (x1->xltype==xltypeErr)
 {
  return x1;
 }
 if (x2->xltype==xltypeErr)
 {
  return x2;
 }
 static XLOPER xlRet={0};
 double d1=0,d2=0;
 if ((x1->xltype&xltypeNum)==xltypeNum)
 {
  d1=x1->val.num;
 }else if ((x1->xltype&xltypeInt)==xltypeInt)
 {
  d1=x1->val.w;
 }else if ((x1->xltype&xltypeSRef)==xltypeSRef)
 {
  if (GetNumFromCell(x1,d1)==false)
  {
   xlRet.val.err=xlerrValue;
   xlRet.xltype=xltypeErr;
   return (LPXLOPER)&xlRet;
  }
 }else
 {
  xlRet.val.err=xlerrValue;
  xlRet.xltype=xltypeErr;
  return (LPXLOPER)&xlRet;
 }
 if ((x2->xltype&xltypeNum)==xltypeNum)
 {
  d2=x2->val.num;
 }else if ((x2->xltype&xltypeInt)==xltypeInt)
 {
  d2=x2->val.w;
 }else if ((x2->xltype&xltypeSRef)==xltypeSRef)
 {
  if (GetNumFromCell(x2,d2)==false)
  {
   xlRet.val.err=xlerrValue;
   xlRet.xltype=xltypeErr;
   return (LPXLOPER)&xlRet;
  }
 }else
 {
  xlRet.val.err=xlerrValue;
  xlRet.xltype=xltypeErr;
  return (LPXLOPER)&xlRet;
 }
 xlRet.xltype=xltypeNum;
 xlRet.val.num=d1+d2;
 return (LPXLOPER)&xlRet;
}
bool GetNumFromCell(LPXLOPER lpXloper,double & dValue)
{
 XLOPER x_Tmp={0};
 if ((lpXloper->xltype & xltypeSRef)==xltypeSRef)
 {
  if (xlretUncalced == Excel(xlCoerce, &x_Tmp, 2, lpXloper, TempInt(xltypeNum)))
  {
   return false;
  }
  if (x_Tmp.xltype==xltypeErr)
  {
   return false;
  }
  dValue=x_Tmp.val.num;
 }else
 {
  return false;
 }
 return true;
}




某个单元格的值人工输入,其它单元格的值根据另一个工作表中的这个单元格的值自动填充
如下图,比如BOM这个工作表的【件号/规格型号】字段人工输入后,他自动在Item这个工作表中去找相应的字段【FModelSpecification】,找到后将【物料属性】、【物料状态】等字段自动填充,不需要人工输入,找不到则不用管。用VBA实现。


Worksheet workSheet; // 假设题主已经取到工作表了
Cell cell = workSheet.Cells[3, 2]; // 取得C4单元格对象
string str = cell.StringValue; // 如果确定该单元格内容是文本类型,直接用StringValue
object obj = cell.Value; // 否则用 Value


使用Visual C++的扩展指令#import:

#import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE14\\MSO.DLL" \

rename("RGB","MsoRGB") \
rename("SearchPath","MsoSearchPath")

#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB"

#import "C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" \
rename( "DialogBox", "ExcelDialogBox" ) \
rename( "RGB", "ExcelRGB" ) \
rename( "CopyFile", "ExcelCopyFile" ) \
rename( "ReplaceText", "ExcelReplaceText" ) \
exclude( "IFont", "IPicture" ) no_dual_interfaces

#import指令会从指定的可执行文件,动态链接库等COM组件中导出类型库(type lib),在Debug和Release临时目录中生成对应的类型库头文件(type lib header file),以供C++程序使用。7a64e58685e5aeb9332
如以上三条指令在编译后会生成excel.tlh, mso.lh和vbetext.olb三个头文件,可以在Debug和Release目录中找到。
这个,你估计看不懂吧

相关阅读

关键词不能为空

ppt怎么做_excel表格制作_office365_word文档_365办公网