vba中text的问题和VBA自动调用的问题

问题:vba中text与value?
补充:
excel2013 中,可以运算的值和显示值。
我想凡是单元格数值为3,就显示为B
if [a1].value=3 then
[a1].text="B" 
end if    
运行时,出现424错误,“要求对象”的提示。怎么回事?
后改为:
If [a1] = 3 Then
 [a1].NumberFormatLocal = "b"
end if
但是,这个单元格就出现显示值为43,value值1900/1/5
又改为:
If [a1] = 3 Then
 [a1].NumberFormatLocal = "B"
end if
运行时,出现1004错误,不能设置range的NumberFormatLocal属性。怎么回事?


回答:
将这句改成下面的格式试一下:
[a1].NumberFormatLocal = """B"""


问题2:VBA自动调用另一张表中满足某些条件的单元格的数据?
补充:
在sheet1表中的A1和A2单元格分别输入数据,自动在sheet2表中寻找与该数据一致的单元格(例如sheet2的A1和B1),并将该单元格所在的行中指定的某些单元格(例如sheet2的C1和D1)的数据赋予sheet1表的C1和D1单元格。


回答:


1.首先定义个过程,做到通用
Private Sub FindAndCopy(ByRef iSoureRange As Range, iTargetSheet As Worksheet, iTargetRange As Range)
        'iSoureRange 代表需要查找数据的单元格,比如楼主栗子中的Sheet1中A1 单元格
        'iTargetSheet 代表需要查找数据的表格,比如楼主栗子中的Sheet2
        'iTargetRange 代表需要复制数据的单元格,比如楼主栗子中的Sheet1中的C1单元格
        Dim iRange As Range '临时变量
        If iSoureRange Is Nothing Or iTargetSheet Is Nothing Or iTargetRange Is Nothing Then Exit Sub '三个参数必须指定对象,否则直接退出
        Set iRange = iTargetSheet.UsedRange.Find(iSoureRange.Value, LookAt:=xlWhole) '查找目标表格中是否存在数据
        If Not iRange Is Nothing Then '找到数据
            iTargetRange.Value = iRange.Value '复制数据到目标单元格,此处仅复制数值,不复制格式等信息
        Else
            MsgBox "表格< " & iTargetSheet & " >中未能查找扫到数据 < " & iSoureRange.Value & " >!" '未能查找到则报错
        End If
End Sub
2. 创建调用前一个过程的代码,比如在Sheet1中创建一个按钮,编辑以下代码:
Private Sub CommandButton1_Click()
    Call FindAndCopy(ActiveSheet.Range("A1"), ThisWorkbook.Sheets("Sheet2"), ActiveSheet.Range("C1"))
End Sub
补充:看到楼主给其他人的补充说明,原来是这样,那就要将上面的代码改一改了。
1.首先定义个过程,做到通用
Private Sub FindAndCopy(ByRef iSoureRange As Range, iTargetSheet As Worksheet, iTargetRange As Range)
        'iSoureRange 代表需要查找数据的单元格,比如楼主栗子中的Sheet1中A1 单元格
        'iTargetSheet 代表需要查找数据的表格,比如楼主栗子中的Sheet2
        'iTargetRange 代表需要复制数据的单元格,比如楼主栗子中的Sheet1中的C1单元格
        Dim iRange As Range, TempRange As Range  '临时变量
        If iSourceRange Is Nothing Or iTargetSheet Is Nothing Or iTargetRange Is Nothing Then Exit Sub '三个参数必须指定对象,否则直接退出
        Set iRange = iTargetSheet.Range("A1").End(xlDown)'找到A列最后一行单元格
        Set iRange = iTargetSheet.Range("$A$1:$A$" & iRange.Row)'获取在目标表格中A列的单元格区域
        For Each TempRange In iRange '遍历目标表格中的A列单元格
            If TempRange.Value = iSourceRange.Value And TempRange.Offset(0, 1).Value = iSourceRange.Offset(0, 1).Value Then'比较两列数据,如果A和B列均和查找数据的两列相等
                iTargetRange.Value = TempRange.Value'则分别复制到目标单元格的两列
                iTargetRange.Offset(0, 1).Value = TempRange.Offset(0, 1).Value
                Exit For'找到第一个后退出循环,避免耗费过长时间,也意味着目标表格中不能存在重复值,如果存在重复值,就始终只找到第一个
            End If
        Next TempRange
End Sub
2. 创建调用前一个过程的代码,比如在Sheet1中创建一个按钮,编辑以下代码:
Private Sub CommandButton1_Click()
    Call FindAndCopy(ActiveSheet.Range("A1"), ThisWorkbook.Sheets("Sheet2"), ActiveSheet.Range("C1"))
End Sub
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
range.NumberFormatLocal = "@"; //设置单元格格式为文本 range = (Range)worksheet.get_Range("A1", "E1"); //获取Excel多个单元格区域:本例做为Excel表头 range.Merge(0); //单元格合并动作 worksheet.Cells[1, 1] = "Excel单元格赋值"; //Excel单元格赋值 range.Font.Size = 15; //设置字体大小 range.Font.Underline=true; //设置字体是否有下划线 range.Font.Name="黑体"; 设置字体的种类 range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //设置字体在单元格内的对其方式 range.ColumnWidth=15; //设置单元格的宽度 range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb(); //设置单元格的背景色 range.Borders.LineStyle=1; //设置单元格边框的粗细 range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb()); //给单元格加边框 range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone; //设置单元格上边框为无边框 range.EntireColumn.AutoFit(); //自动调整列宽 Range.HorizontalAlignment= xlCenter; // 文本水平居方式 Range.VerticalAlignment= xlCenter //文本垂直居方式 Range.WrapText=true; //文本自动换行 Range.Interior.ColorIndex=39; //填充颜色为淡紫色 Range.Font.Color=clBlue; //字体颜色 xlsApp.DisplayAlerts=false; //保存Excel的时候,不弹出是否保存的窗口直接进行保存 ==================================================================== using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.Runtime.InteropServices; using Microsoft.Office.Interop.Excel; using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass; using System.IO; namespace ExcalDemo { public class ExcelFiles { public void CreateExcelFiles() { ExcelApplication excel = new ExcelApplication(); try { excel.Visible = false;// 不显示 Excel 文件,如果为 true 则显示 Excel 文件 excel.Workbooks.Add(Missing.Value);// 添加工作簿 Worksheet sheet = (Worksheet)excel.ActiveSheet;// 获取当前工作表 Range range = null;// 创建一个空的单元格对象 range = sheet.get_Range("A1", Missing.Value);// 获取单个单元格 range.RowHeight = 20; // 设置行高 range.ColumnWidth = 20; // 设置列宽 range.Borders.LineStyle = 1; // 设置单元格边框 range.Font.Bold = true; // 加粗字体 range.Font.Size = 20; // 设置字体大小 range.Font.ColorIndex = 5; // 设置字体颜色 range.Interior.ColorIndex = 6; // 设置单元格背景色 range.HorizontalAlignment = XlHAlign.xlHAlignCenter;// 设置单元格水平居 range.VerticalAlignment = XlVAlign.xlVAlignCenter;// 设置单元格垂直居 range.Value2 = "设置行高和列宽";// 设置单元格的值 range = sheet.get_Range("B2", "D4");// 获取多个单元格 range.Merge(Missing.Value); // 合并单元格 range.Columns.AutoFit(); // 设置列宽为自动适应 range.NumberFormatLocal = "#,##0.00";// 设置单元格格式为货币格式 // 设置单元格左边框加粗 range.Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick; // 设置单元格右边框加粗 range.Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick; range.Value2 = "合并单元格"; // 页面设置 sheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4; // 设置页面大小为A4 sheet.PageSetup.Orientation = XlPageOrientation.xlPortrait; // 设置垂直版面 sheet.PageSetup.HeaderMargin = 0.0; // 设置页眉边距 sheet.PageSetup.FooterMargin = 0.0; // 设置页脚边距 sheet.PageSetup.LeftMargin = excel.InchesToPoints(0.354330708661417); // 设置左边距 sheet.PageSetup.RightMargin = excel.InchesToPoints(0.354330708661417);// 设置右边距 sheet.PageSetup.TopMargin = excel.InchesToPoints(0.393700787401575); // 设置上边距 sheet.PageSetup.BottomMargin = excel.InchesToPoints(0.393700787401575);// 设置下边距 sheet.PageSetup.CenterHorizontally = true; // 设置水平居 // 打印文件 sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); // 保存文件到程序运行目录下 sheet.SaveAs(Path.Combine(System.Windows.Forms.Application.StartupPath,"demo.xls"), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); excel.ActiveWorkbook.Close(false, null, null); // 关闭 Excel 文件且不保存 } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { excel.Quit(); // 退出 Excel excel = null; // 将 Excel 实例设置为空 } } } }
### 回答1: VBA是Visual Basic for Applications的缩写,是一种用于自动化Microsoft Office程序的编程语言。以下是一些VBA调用和操作Excel和Word的例子: 1. 在Excel创建新工作簿并添加工作表: ``` Sub CreateNewWorkbook() Dim NewBook As Workbook Set NewBook = Workbooks.Add NewBook.Worksheets.Add End Sub ``` 2. 在Excel打开现有工作簿并将数据复制到新工作表: ``` Sub CopyDataToNewSheet() Dim CurrentBook As Workbook Set CurrentBook = Workbooks.Open("C:\MyFolder\MyWorkbook.xlsx") Dim NewSheet As Worksheet Set NewSheet = CurrentBook.Worksheets.Add CurrentBook.Worksheets("Sheet1").Range("A1:D10").Copy NewSheet.Range("A1") End Sub ``` 3. 在Word创建新文档并添加段落: ``` Sub CreateNewDocument() Dim NewDoc As Document Set NewDoc = Documents.Add NewDoc.Content.Text = "This is a new document." NewDoc.Content.Paragraphs.Add End Sub ``` 4. 在Word打开现有文档并将文本插入到指定位置: ``` Sub InsertTextIntoDocument() Dim CurrentDoc As Document Set CurrentDoc = Documents.Open("C:\MyFolder\MyDocument.docx") CurrentDoc.Content.SetRange Start:=0, End:=0 CurrentDoc.Content.Text = "This text was inserted at the beginning of the document." End Sub ``` 以上仅是一些简单的例子,VBA的功能非常强大,可以实现许多复杂的自动化任务。如果需要深入学习VBA,请参考官方文档或相关教程。 ### 回答2: VBA是一种微软开发的编程语言,用于自动化Office软件的操作,包括Excel和Word。在使用Excel和Word时,我们经常需要进行各种操作,如数据筛选、图表绘制、报表导出、信函生成等等。这些操作可以通过手动操作软件完成,但当数据量很大或操作比较复杂时,手动操作可能会耗费大量时间和精力。而VBA可以帮助我们自动化这些操作,将时间和精力用于更有意义的工作。 VBA可以调用和操作Excel和Word,我们可以通过VBA编写代码,实现各种操作。具体来说,我们可以使用VBA对Excel进行以下操作: 1. 数据读取:我们可以使用VBA读取Excel的数据,进行数据分析、处理等操作。 2. 数据筛选:我们可以编写筛选代码,对Excel的数据进行筛选和排序。 3. 数据处理:我们可以编写计算代码,对Excel的数据进行加减乘除等数学运算。 4. 图表绘制:我们可以编写图表代码,对Excel的数据进行图表绘制。 5. 报表导出:我们可以编写导出代码,将Excel的数据导出为其他格式的报表。 对于Word软件,我们可以使用VBA进行以下操作: 1. 文本处理:我们可以使用VBA在Word进行文本处理,包括文字替换、字体修改、段落格式修改等。 2. 表格处理:我们可以使用VBA对Word的表格进行操作,包括表格插入、单元格合并、数据填充等。 3. 自动化信函:我们可以使用VBA编写代码,实现自动生成信函的功能,自动填充信函内容、设置信函格式。 总之,通过VBA调用和操作Excel和Word,我们可以大大提高工作效率,节省时间和精力,让我们的工作更加高效和有意义。 ### 回答3: VBA(Visual Basic for Applications)是一种基于Microsoft Visual Basic语言的宏编程语言,常用于Microsoft Office套件的应用程序,如Excel和Word。VBA可用于自动化Excel和Word的任务和操作,从而提高工作效率和准确度。 在ExcelVBA可以用于处理数据、执行计算、生成报表、创建图形等任务。使用VBA可以快速地操作Excel的工作簿、工作表、单元格等对象,并对它们进行各种操作,如添加、删除、修改、复制、粘贴、排序、筛选等。同时,VBA还可以访问Excel内置函数、自定义函数、宏、插件等功能,实现更多复杂的操作。 在WordVBA可以用于自动化文档创建、编辑、格式化、排版等任务。利用VBA,可以方便地访问Word的段落、文本、表格、图形等对象,进行各种操作,如插入、删除、替换、格式化、调整布局等。此外,VBA还可以调用Word的内置功能、自定义功能、插件等,实现更多复杂的操作,如生成目录、引用、注释、执行邮件合并等。 要使用VBA操作Excel或Word,首先需要打开相应的应用程序,并打开要操作的工作簿或文档。然后,可以在VBA编辑器编写代码,使用对象、方法、属性等来实现所需的操作。编写完成后,可以保存代码并启动运行,此时VBA自动执行代码,并完成相应的操作。 总的来说,VBA调用和操作Excel和Word是一种非常强大和灵活的工具,可用于提高工作效率和精确度,同时也能实现更多个性化和复杂化的操作,从而更好地满足用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值