乔山办公网我们一直在努力
您的位置:乔山办公网 > office365 > 在excel中如何用VB实现以下内容

在excel中如何用VB实现以下内容

作者:乔山办公网日期:

返回目录:office365


打开开发工具窗口,然后新建一个模块就可以写vb代码了
或者按住alt+F11就打开vba编辑窗口了。

我使用的办法有两种:
第一种办法:使用WorkSheet的SelectionChange事件
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
此处放置事件处理程序,该事件处理程序之外,设置两个全局变量,记录上一次Range行列号及对应的文本内容,如果上次Range对应的行号是1、列号是1并且单元格内容是“中国”则用程序将B1格的内容设置为“111”,若上次Range对应的行号是1、列号是1并且单元格内容是“美国”则用程序将B1格的内容设置为“1123”。
End Sub
这种办法需要你了解WorkSheet的事件处理、Range对象的操作及其VBA语言,我以前使用过该技术实现过比较复杂的查表工作。我在一个Access数据表中有一个词典,当在第一列中某一单元格输入一个字符串时,就在SelectionChange事件中,从词典中查找该关键词,找到后,将词典条目对应的内容填入第二列对应的单元格内。不过,可以不使用VB,直接使用Excel的两个函数实现类似的功能,这就是第二种办法。
第二种办法:使用match和index函数
使用这种你需要额外使用一个sheet作为当作一个词典,假设e799bee5baa6e58685e5aeb9330我们将Sheet2作为词典使用,Sheet1作为输入表格使用。
假如我们已经在Sheet2中输入数据如下
A1:中国 B1:111
A2:美国 B2:1123
A3:日本 B3:japan
A4:俄罗斯 B4:莫斯科
......

为了说明清楚,我们在Sheet1中插入一个中间列(辅助列),假设为C列。
C2单元格中输入公式:=MATCH(A1,Sheet2!A:A,0)
B2单元格中输入公式:=INDEX(Sheet2!B:B,Sheet1!C2,0)
这样,你在A1中输入“中国”就会在B2中显示“111",输入“美国”就会显示“1123”,输入“日本”就会显示“japan",输入“俄罗斯”就会显示“莫斯科”
将Excel数据嵌入到VB中,使他在VB的MDI窗体中,看起来就像VB的一部分,同时我也可以用代码对其进行读写
我用OLE把它嵌入到里面,不过每次双击以后,出来的Excel大小我无法控制
(我不想用对象的方式来操作Excel,因为我要把编辑表格的界面提供给用户)

bas中:e69da5e887aa7a686964616f361

Public XL As Excel.Application, xlHwnd As Long
Public
Declare Sub Sleep Lib "kernel32 " (ByVal dwMilliseconds As Long)

Public
Const WS_CAPTION As Long = &HC00000
Public Const SW_SHOW As Long = 5

Public Const WS_EX_APPWINDOW = &H40000
Public Const SW_SHOWMAXIMIZED
= 3
Public Const GWL_STYLE As Long = -16

Public Const GW_HWNDNEXT =
2

Public Declare Function GetWindowThreadProcessId Lib "user32 " (ByVal
hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function
GetParent Lib "user32 " (ByVal hwnd As Long) As Long
Public Declare Function
FindWindow Lib "user32 " Alias "FindWindowA " (ByVal lpClassName As String,
ByVal lpWindowName As String) As Long
Public Declare Function GetWindow Lib
"user32 " (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare
Function GetWindowText Lib "user32 " Alias "GetWindowTextA " (ByVal hwnd As
Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare
Function SetParent Lib "user32 " (ByVal hWndChild As Long, ByVal hWndNewParent
As Long) As Long

Public Declare Function SetWindowLong Lib "user32 "
Alias "SetWindowLongA " (ByVal hwnd As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32
" Alias "GetWindowLongA " (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function ShowWindow Lib "user32 " (ByVal hwnd As Long, ByVal
nCmdShow As Long) As Long
Public Declare Function DrawMenuBar Lib "user32 "
(ByVal hwnd As Long) As Long

Public Const WS_SYSMENU = &H80000

Public Sub RemoveSysButton(ByVal hHwnd As Long)
Dim lWnd As Long

lWnd = GetWindowLong(hHwnd, GWL_STYLE)
lWnd = lWnd And Not (WS_SYSMENU)

lWnd = SetWindowLong(hHwnd, GWL_STYLE, lWnd)
DrawMenuBar hHwnd
End
Sub

Function InstanceToWnd(ByVal target_pid As Long) As Long
Dim
test_hwnd As Long
Dim test_pid As Long
Dim test_thread_id As Long

test_hwnd = FindWindow(ByVal 0&, ByVal 0&)

Do While
test_hwnd <> 0
If GetParent(test_hwnd) = 0 Then
test_thread_id =
GetWindowThreadProcessId(test_hwnd, test_pid)
If test_pid = target_pid Then

InstanceToWnd = test_hwnd
Exit Do
End If
End If
test_hwnd =
GetWindow(test_hwnd, GW_HWNDNEXT)
Loop
End Function

Public Sub
SetFormStyle(hwnd)
Dim IStyle As Long
IStyle = GetWindowLong(hwnd,
GWL_STYLE)
IStyle = IStyle And Not WS_CAPTION And Not WS_EX_APPWINDOW

SetWindowLong hwnd, GWL_STYLE, IStyle
ShowWindow hwnd, SW_SHOW

DrawMenuBar hwnd
End Sub
form中:

Set XL = CreateObject(
"excel.application ")
xlHwnd = FindWindow( "XLMAIN ", XL.Caption)

oldHwnd = GetParent(xlHwnd)

Call SetFormStyle(xlHwnd)

l =
SetParent(xlHwnd, Me.hwnd)

XL.Workbooks.Open FileName:= "要打开的文档 "

RemoveSysButton xlHwnd

XL.WindowState = xlNormal
XL.Height =
Me.Height / 20
XL.Width = Me.Width / 20
XL.Top = 0
XL.Left = 0

大体就是这样的,在此基础上再完善一下就达到要求了。

标记的菜单 - 视图 - 工具栏钩,前VB VB程序来快速插入点VB编辑器工具栏上的按钮,并将其粘贴到一个VB程序。

相关阅读

  • 在excel中如何用VB实现以下内容

  • 乔山办公网office365
  • 打开开发工具窗口,然后新建一个模块就可以写vb代码了或者按住alt+F11就打开vba编辑窗口了。我使用的办法有两种:第一种办法:使用WorkSheet的SelectionChange事件Private Sub Worksheet_SelectionCh
  • -office2007调出vb,office vb

  • 乔山办公网office365
  • 步骤电脑2的表格C所在的文件夹设置共享电脑1中将电复脑2所共享的文件夹映射成盘符(比如制Y:盘)在电脑1中就可以像访问本地磁盘里面的文件一百样,访问该文件温馨提示度:如果
关键词不能为空
极力推荐

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