表格vb编程入门(一个工作表提取另一个工作表格数据的VB编程)

本文目录
- 一个工作表提取另一个工作表格数据的VB编程
- 怎样利用Excel进行VB编程
- 怎么用vb编程操作word绘制表格的边框
- VB制作可以编辑的表格,怎么才能做到呢(在线等!)
- 如何通过VB操作EXCEL
- 用vb怎么做excel表格
一个工作表提取另一个工作表格数据的VB编程
在 Excel 中,您可以使用 VBA 编程来根据一个工作表的数据提取并汇总到另一个工作表。以下是一个简单的示例,从 Sheet1 汇总物料名称的数量,并将结果填入 Sheet2 中的对应日期和物料名称单元格:
Sub SummarizeData()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRowWs1 As Long, lastRowWs2 As Long
Dim i As Long, j As Long
Dim currentDate As Date, currentMaterial As String
Dim quantitySum As Long
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
lastRowWs1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
lastRowWs2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
’ Loop through each row in Sheet2
For i = 2 To lastRowWs2
currentDate = ws2.Cells(i, 1)
currentMaterial = ws2.Cells(i, 2)
quantitySum = 0
’ Loop through each row in Sheet1
For j = 2 To lastRowWs1
If ws1.Cells(j, 1) = currentDate And ws1.Cells(j, 2) = currentMaterial Then
quantitySum = quantitySum + ws1.Cells(j, 4)
End If
Next j
’ Fill the summarized quantity in Sheet2
ws2.Cells(i, 3) = quantitySum
Next i
End Sub
请注意,这个示例代码中的列索引可能需要根据您的实际数据表格进行调整。在此示例中,我们假设 Sheet1 中的日期在第一列,物料名称在第二列,数量在第五列。同时,我们假设 Sheet2 中的日期在第一列,物料名称在第二列,汇总数量在第三列。
要运行此代码,请按 Alt + F11 打开 Visual Basic for Applications (VBA) 器。然后,单击“插入”》“模块”,并将代码粘贴到新模块窗口中。在 Excel 中按 Alt + F8,选择 SummarizeData,然后单击“运行”。这将根据 Sheet1 的数据填充 Sheet2 中的汇总数量。
怎样利用Excel进行VB编程
Const C1 = 10 ’连续数调整值
Const C2 = 15 ’非连续数调整值
Const S = 10 ’设定连续范围
Sub process()
Dim a, i!, j!, d!, n
Range("A1").Sort key1:=Range("A1"), order1:=xlAscending
a = WorksheetFunction.Transpose(Range("A1:A" & .End(xlUp).Row))
For i = 1 To UBound(a)
d = a(i) + S
For j = i To UBound(a)
If j + 1 》 UBound(a) Then Exit For
If a(j + 1) 》 d Then Exit For
Next
If i = j Then ’非连续数
a(i) = a(i) - C2
Else ’连续数
n = a(i) - C1
For k = i To j
a(k) = n
Next
i = j
End If
Next
Range("B1").Resize(UBound(a)) = WorksheetFunction.Transpose(a)
End Sub
效果如图,可下载附件参考
怎么用vb编程操作word绘制表格的边框
单击开始----查找按钮(或按ctrl
+
f组合键);
2、弹出查找对话框,在查找内容处输入需要查找的数字,在以下项中查找处选择主文档,单击关闭按钮;
3、此时文档中所的查找的数字都被选中。
VB制作可以编辑的表格,怎么才能做到呢(在线等!)
VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。
一、 VB读写EXCEL表:
VB本身提自动化功能可以读写EXCEL表,其方法如下:
1、在工程中引用Microsoft Excel类型库:
从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。
2、在通用对象的声明过程中定义EXCEL对象:
Dim xlApp As Excel.Application
Dim xlBook As Excel.WorkBook
Dim xlSheet As Excel.Worksheet
3、在程序中操作EXCEL表常用命令:
Set xlApp = CreateObject("Excel.Application") ’创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open("文件名") ’打开已经存在的EXCEL工件簿文件
xlApp.Visible = True ’设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets("表名") ’设置活动工作表
xlSheet.Cells(row, col) =值 ’给单元格(row,col)赋值
xlSheet.PrintOut ’打印工作表
xlBook.Close (True) ’关闭工作簿
xlApp.Quit ’结束EXCEL对象
Set xlApp = Nothing ’释放xlApp对象
xlBook.RunAutoMacros (xlAutoOpen) ’运行EXCEL启动宏
xlBook.RunAutoMacros (xlAutoClose) ’运行EXCEL关闭宏
4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。
二、 EXCEL的宏功能:
EXCEL提供一个Visual Basic器,打开Visual Basic器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。
三、 VB与EXCEL的相互勾通:
充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:
在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。
四、举例:
1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序:
Dim xlApp As Excel.Application ’定义EXCEL类
Dim xlBook As Excel.Workbook ’定义工件簿类
Dim xlsheet As Excel.Worksheet ’定义工作表类
Private Sub Command1_Click() ’打开EXCEL过程
If Dir("D:\temp\excel.bz") = "" Then ’判断EXCEL是否打开
Set xlApp = CreateObject("Excel.Application") ’创建EXCEL应用类
xlApp.Visible = True ’设置EXCEL可见
Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") ’打开EXCEL工作簿
Set xlsheet = xlBook.Worksheets(1) ’打开EXCEL工作表
xlsheet.Activate ’激活工作表
xlsheet.Cells(1, 1) = "abc" ’给单元格1行驶列赋值
xlBook.RunAutoMacros (xlAutoOpen) 运行EXCEL中的启动宏
Else
MsgBox ("EXCEL已打开")
End If
End Sub
Private Sub Command2_Click()
If Dir("D:\temp\excel.bz") 《》 "" Then ’由VB关闭EXCEL
xlBook.RunAutoMacros (xlAutoClose) ’执行EXCEL关闭宏
xlBook.Close (True) ’关闭EXCEL工作簿
xlApp.Quit ’关闭EXCEL
End If
Set xlApp = Nothing ’释放EXCEL对象
End
End Sub
2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为"bb.xls"的EXCEL文件。
3、在"bb.xls"中打开Visual Basic器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:
Sub auto_open()
Open "d:\temp\excel.bz" For Output As #1 ’写标志文件
Close #1
End Sub
Sub auto_close()
Kill "d:\temp\excel.bz" ’删除标志文件
End Sub
4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了VB与EXCEL的无缝连接。
如何通过VB操作EXCEL
Private Sub Command1_Click()
If ZID(Text1) = 0 Then
MsgBox "对不起,没找到您输入的ID!"
Else
Set xlApp = CreateObject("Excel.Application") ’创建EXCEL对象
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("D:\客户资料.xls")
Text2 = xlApp.Worksheets("Sheet1").Range("A1").Cells(ZID(Form1.Text1), 2)
Text3 = xlApp.Worksheets("Sheet1").Range("A1").Cells(ZID(Form1.Text1), 3)
’……
End If
On Error Resume Next
xlBook.Close (True)
xlApp.ActiveWorkbook.Close
xlApp.Quit
Set xlApp = Nothing
Shell "taskkill.exe /im Excel.exe /f", vbHide
End Sub
Function ZID(ID As String) As Integer
Dim I As Integer
Set xlApp = CreateObject("Excel.Application") ’创建EXCEL对象
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("D:\学生信息.xlsx")
I = 1
Do
If xlApp.Worksheets("Sheet1").Range("A1").Cells(I, 1) = "" Then
ZID = 0
Exit Function
End If
If xlApp.Worksheets("Sheet1").Range("A1").Cells(I, 1) = Form1.Text1 Then
ZID = I
Exit Do
End If
I = I + 1
Loop
On Error Resume Next
xlBook.Close (True)
xlApp.ActiveWorkbook.Close
xlApp.Quit
Set xlApp = Nothing
End Function
Private Sub Command2_Click()
If ZID(Text1) = 0 Then
MsgBox "对不起,没找到您输入的ID!"
Else
Set xlApp = CreateObject("Excel.Application") ’创建EXCEL对象
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open("D:\学生信息.xlsx")
Val(Text2) = xlApp.Worksheets("Sheet1").Range("A1").Cells(ZID(Form1.Text1), 2)
Val(Text3) = xlApp.Worksheets("Sheet1").Range("A1").Cells(ZID(Form1.Text1), 3)
’……
xlBook.Save
End If
On Error Resume Next
xlBook.Close (True)
xlApp.ActiveWorkbook.Close
xlApp.Quit
Set xlApp = Nothing
Shell "taskkill.exe /im Excel.exe /f", vbHide
End Sub
***隐藏网址***
用vb怎么做excel表格
EXCEL函数公式直接操作的是数组,完全可以达到循环的目的,可以理解为是封装了的循环函数,下面举两个例子来说明:
问题1: 条件求和 公式SUMIF,求序号大于3的数据的和。
a. 用函数公式就非常简单在C2单元格输入=SUMIF(A2:A6,"》3",B2:B6)就能行到结果42
b. 如果用VBA就复杂多了,代码如下:
set sh = ActivateSheetsum = 0 # 保存求和的结果For i = 2 to 6 If sh.cells(i,1)》3 Then sum = sum + sh.cells(i,2) End ifNext i
问题2:条件查找公式VLOOKUP,依次把B列的名字在A列中查找,如果找到就标记为TRUE,如果没有找到就标记为FALSE.
a. 函数就非常简单了,只需要在C2输入公式=IF(ISERROR(VLOOKUP(B2,A:A,1,FALSE)),FALSE,TRUE),然后下拉下C4
b. VBA代码就比较复杂了,如下:
set sh = ActivateSheetFor i=2 to 4 isexist = FALSE For j=2 to 4 If sh.cells(i,2) = sh.cells(j,1) Then isexist = TRUE End If Next j sh.cells(i,3) = isexistNext i

更多文章:
kali上传文件到apache服务器(如何在macOS系统和KaliLinux系统之间共享文件)
2025年10月25日 23:30
c语言一维数组有几个数(c语言的一维数组中至少要有几个元素)
2025年11月27日 13:30
织梦岛隐藏要素(塞尔达传说织梦岛脸孔神殿迷宫怎么通关 脸孔神殿迷宫)
2025年9月18日 18:45
最新版android studio安装(如何安装android studio)
2025年9月24日 10:15
97的十六进制(97 98 换成八进制 如何换 如何将十进制转换成八进制或者十六进制 哪位大仙帮帮忙)
2026年4月5日 15:00
redis命令登录(软件Xshell连接Redis操作教程)
2026年6月6日 17:30
category nouns(the different lexical category in translation)
2026年1月9日 10:45
哈夫曼树编码不唯一那解码结果(如何解决哈夫曼树不唯一的问题)
2025年6月24日 02:45
关系数据库管理系统有哪些?(下面哪些属于关系型数据库管理系统())
2026年5月2日 12:15
insertrow(在Power Query中如何插入自定义行)
2025年10月10日 12:30











