如何使用vba以输入的关键字从vba复制excel文件并重命名工作簿中查找隐藏工作表中的数据并返回显示?

1.怎样设置excel文档打印区域步骤: 1、打开编辑好的Excel文档,选中想要打印的区域,点击页面布局选项卡,选择打印区域选项, 点击设置打印区域子选项,这时候我们就成功设置了打印区域。 2、在设置好打印区域后,我们需要对选中的打印区域的输出效果稍作调整,以符合我们的输出需求。首先按下CTRL+P, 点击预览选项; 3、在弹出的先窗口中点击页面设置, 我们可以看到:1-页面,2-页边距,3-页眉/页脚,4-工作表四个选项卡,它们分别依次负责调整页面布局,调整页边距,添加页眉和页脚,以及工作表打印输出的一些高级选项(工作表选项新手很少使用),再熟悉了整个简单的页面设置后读者可以自行尝试对每一个选项进行亲自操作。 上述调整完成后,点击确定,输出到打印机即可。2.怎么单独打印Excel指定区域?打字员小吴向我提出了一个问题:“我用Excel制作的表格,如果只想打印其中的某个区域,该如何操作?”我向她推荐了下面下面几种方法,你如何感兴趣,也不妨一试。 一、区域设置法 如果每次都是打印某一个固定的区域,用这种方法是最合适的。 启动Excel2003(其它版本请仿照操作),打开相应的工作簿文件,选中需要打印的区域,执行“文件→打印区域→设置打印区域”命令。 以后,需要打印该区域时,只要按一下“常用”工具栏上的“打印”按钮就行了。 [友情提醒]此时,如果需要打印整个工作表的内容,请先取消设置的打印区域:执行“文件→打印区域→取消打印区域”命令。 二、打印区域法 如果要想打印多个不同的区域,请采取此种方法。 选中需要打印的区域,执行“文件→打印”命令,打开“打印内容”对话框,选中“打印内容”下面的“选定区域”选项,然后确定打印就行了。 [友情提醒]①无论是否设置了打印区域,此方法都是有效的。②如果同时选中了多个不连续的数据区域,进行上述操作时,系统只将每个连续的区域打印在一页上。 ③在“打印内容”对话框中(参见图1),选中“打印范围”下面的“页”选项,然后在后面的方框中输入起始页码,即可将指定的页打印出来。(在WORD中,仿照此操作,也可以将指定的页打印出来。) 三、视面管理法 如果经常要打印多个不同的区域,采取方法二操作,既麻烦又容易出错,建议大家采用本办法。 执行“视图→视面管理器”命令,打开“视面管理器”对话框,单击其中的“添加”按钮,打开“添加视图”对话框,输入一个全称(如“全部”),确定退出。 选中不需要打印的列(行),右击鼠标,在随后弹出的快捷菜单中选“隐藏”选项,将不需要打印的列(行)隐藏起来,然后再打开“视面管理器”对话框,“添加”一个“视面视图”(如“打印报表”等),确定退出。 提醒大家在按住Ctrl键的同时,用鼠标分别单击相应的列(行),可以一次性同时选定多个不连续的列(行),一次性实现上述隐藏操作。 再次打开“视面管理器”对话框,选中“全部”视图项,单击“显示”按钮,将整个工作表都显示出来。然后仿照上面的操作,将另外一些不需要打印的列(行)隐藏起来,再“添加”另一个“视面视图”(如“标牌”等),确定退出。 以后需要打印某个区域时,先打开“视面管理器”对话框,选中相应的视图(如“打印报表”)项,单击“显示”按钮,将相应的视图显示出来,然后执行打印操作就行了。 四、宏命令法 启动Excel,打开相应的工作簿(,按下“Alt+F11”组合键,进入“Visual Basic编辑器”状态,在左侧“工程资源管理器”窗口中,选中上述工作簿对话的工程(如VBAProject(2004备案。 xls)),执行“插入→模块”命令插入一个新模块(“模块1”),然后将下述代码输入到右侧的窗口中: Sub 打印() Selection。PrintOut End Sub 输入完成后,关闭“Visual Basic编辑器”窗口返回。 选中需要打印的区域,执行“工具→宏→宏”命令,打开“宏”对话框,选中刚才编辑的宏(“打印”),单击“执行”按钮即可。}
首页
\
问答
\
如何使用组合框输入选择工作表以将数据复制到excel vba中(How to use combo box input to select work sheet to copy data to in excel vba) 我认为这是一个简单的问题,但因为在我挣扎之前我没有以这种方式使用过excel。 我正在尝试创建一个基于Excel VBA的程序。 我在呼叫中心工作。 我们有许多excel表来记录不同方案的呼叫。 我有一个简化这个过程的项目。 到目前为止,我已经创建了一个工作簿,其中有单独的工作表来表示每个方案。 我创建了一个用户表单来收集信息。 其中一个组合框表示呼叫涉及的方案。 userform的输入需要登录到工作簿中与组合框中所选方案名称对应的工作表中。 我似乎无法接近工作。 任何建议或意见,将不胜感激!
我的代码是: Private Sub cmdClear_Click()
Call UserForm_Initialize
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub ComboBox1_Change()
Dim ShtName As String
ShtName = ComboBox1.List(ComboBox1.ListIndex)
End Sub
Private Sub CommandButton1_Click()
Call Add_Data
End Sub
Private Sub Add_Data()
Dim Worksheets As Range
Dim ws As Worksheet
Dim UserForm As Object
Dim iRow As Long
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set ws = this.ComboBox1.GetItemText(this.ComboBox1.SelectedItem)
'find first empty row in database
iRow = ShtName.Cells(Rows.Count, 1).End(x1up).Offset(1, 0).Row
'copy the data to the database
ws.Cells(iRow, 1) = Date
ws.Cells(iRow, 2) = Me.txtName.Value
ws.Cells(iRow, 3) = Me.txtNumber.Value
ws.Cells(iRow, 4) = ComboBox2.Value
ws.Cells(iRow, 5).Value = Me.txtQuery.Value
If optYes = True Then
msgstr = "Yes"
ElseIf optNo = True Then
msgstr = "No"
End If
ws.Cells(iRow, 6).Value = msgstr
If chkMain = True Then
msgstri = "Main"
ElseIf chkExec = True Then
msgstr = "Exec"
Else
msgstri = ""
End If
ws.Cells(iRow, 7).Value = msgstri
ws.Cells(iRow, 8).Value = Me.txtTime.Value
End Sub
Private Sub UserForm_Initialize()
ComboBox1.Clear
ComboBox1.AddItem ("Sheet2")
ComboBox1.AddItem ("Sheet3")
ComboBox1.AddItem ("Sheet4")
ComboBox1.AddItem ("Sheet5")
ComboBox1.AddItem ("Sheet6")
ComboBox1.AddItem ("Sheet7")
ComboBox1.AddItem ("Sheet8")
ComboBox1.AddItem ("Sheet9")
ComboBox1.AddItem ("Sheet10")
ComboBox1.AddItem ("Sheet11")
ComboBox1.AddItem ("Sheet12")
ComboBox2.Clear
ComboBox2.AddItem ("agent1")
ComboBox2.AddItem ("agent2")
ComboBox2.AddItem ("agent3")
ComboBox2.AddItem ("agent4")
ComboBox2.AddItem ("agent5")
ComboBox2.AddItem ("agent6")
ComboBox2.AddItem ("agent7")
ComboBox2.AddItem ("agent8")
ComboBox2.AddItem ("agent9")
ComboBox2.AddItem ("agent10")
txtNumber.Value = ""
txtName.Value = ""
txtQuery.Value = ""
txtTime.Value = ""
optYes = False
optNo = False
chkMain = False
chkExec = False
ComboBox1.SetFocus
End Sub
I think this is a simple question but as I haven't used excel in this way before I am struggling. I am trying to create a program based in Excel VBA. I work in a call center. We have numerous excel sheets to log calls for different schemes. I have a project to streamline this process. So far I have created a workbook that has separate sheets named to represent each scheme. I have created a userform to gather information. One of the combo boxes indicates which scheme the call is in regards to. The input from the userform needs to be logged on to a sheet in the work book that corresponds to the name of the scheme selected in the combo box. I cant seem to get this close to working. Any suggestions or advice would be greatly appreciated!The code I have is: Private Sub cmdClear_Click()
Call UserForm_Initialize
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub ComboBox1_Change()
Dim ShtName As String
ShtName = ComboBox1.List(ComboBox1.ListIndex)
End Sub
Private Sub CommandButton1_Click()
Call Add_Data
End Sub
Private Sub Add_Data()
Dim Worksheets As Range
Dim ws As Worksheet
Dim UserForm As Object
Dim iRow As Long
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set ws = this.ComboBox1.GetItemText(this.ComboBox1.SelectedItem)
'find first empty row in database
iRow = ShtName.Cells(Rows.Count, 1).End(x1up).Offset(1, 0).Row
'copy the data to the database
ws.Cells(iRow, 1) = Date
ws.Cells(iRow, 2) = Me.txtName.Value
ws.Cells(iRow, 3) = Me.txtNumber.Value
ws.Cells(iRow, 4) = ComboBox2.Value
ws.Cells(iRow, 5).Value = Me.txtQuery.Value
If optYes = True Then
msgstr = "Yes"
ElseIf optNo = True Then
msgstr = "No"
End If
ws.Cells(iRow, 6).Value = msgstr
If chkMain = True Then
msgstri = "Main"
ElseIf chkExec = True Then
msgstr = "Exec"
Else
msgstri = ""
End If
ws.Cells(iRow, 7).Value = msgstri
ws.Cells(iRow, 8).Value = Me.txtTime.Value
End Sub
Private Sub UserForm_Initialize()
ComboBox1.Clear
ComboBox1.AddItem ("Sheet2")
ComboBox1.AddItem ("Sheet3")
ComboBox1.AddItem ("Sheet4")
ComboBox1.AddItem ("Sheet5")
ComboBox1.AddItem ("Sheet6")
ComboBox1.AddItem ("Sheet7")
ComboBox1.AddItem ("Sheet8")
ComboBox1.AddItem ("Sheet9")
ComboBox1.AddItem ("Sheet10")
ComboBox1.AddItem ("Sheet11")
ComboBox1.AddItem ("Sheet12")
ComboBox2.Clear
ComboBox2.AddItem ("agent1")
ComboBox2.AddItem ("agent2")
ComboBox2.AddItem ("agent3")
ComboBox2.AddItem ("agent4")
ComboBox2.AddItem ("agent5")
ComboBox2.AddItem ("agent6")
ComboBox2.AddItem ("agent7")
ComboBox2.AddItem ("agent8")
ComboBox2.AddItem ("agent9")
ComboBox2.AddItem ("agent10")
txtNumber.Value = ""
txtName.Value = ""
txtQuery.Value = ""
txtTime.Value = ""
optYes = False
optNo = False
chkMain = False
chkExec = False
ComboBox1.SetFocus
End Sub
更新时间:2023-01-21 15:01相关问答
更多
您是否在Change Event中添加工作表名称? 这将重新启动 Change Event。 我建议填充它,比如在UserForm_Initialize事件中。 这是你在尝试什么? Dim Sh As Worksheet
Private Sub UserForm_Initialize()
For Each Sh In ThisWorkbook.Sheets
If Sh.Name
"Inputs" Then
ComboBox1.AddItem Sh.Na
...
正如您所建议的那样,这可以通过循环条件列中的单元格来完成(在示例代码中它是A列)。 这是您要修改的示例代码。 Sub MoveToSheets()
Dim dataSource As Worksheet: Set dataSource = ThisWorkbook.Sheets(1)
Dim dataTargetA As Worksheet: Set dataTargetA = ThisWorkbook.Sheets(2)
Dim dataTargetB As Worksheet:
...
示例文件下载链接示例文件 代码: Private Sub Worksheet_Change(ByVal Target As Range)
Dim ctgCount, UniqueCount As Long
Dim subCategory() As String
Dim subItems As String
Dim myItems, ValidationFormula As String
Dim ArrayItemCount As Long
Dim UniqueItemMatch As Boolean
my
...
With Sheets("Input Form").Shapes("APPDateDropDown")
DateDropDown = .ControlFormat.List(.ControlFormat.ListIndex)
End With
With Sheets("Input Form").Shapes("APPDateDropDown")
DateDropDown = .ControlFormat.List(.ControlFormat.ListIndex)
End With
删除此行: .Clear
并尝试明确这样: Private Sub ComboBox1_Change()
'you don't need a loop to add values, use List property
Me.ComboBox1.List = Application.Transpose(Sheet3.Range("A1:A15"))
'if you want the data transferred to the sheet that contains the Com
...
这样的事情对你有用: Sub tgr()
Dim wsData As Worksheet
Dim wsDest As Worksheet
Set wsData = Sheets("Sheet1")
Set wsDest = Sheets("Dump")
With wsData.Range("B1", wsData.Cells(Rows.Count, "B").End(xlUp))
.AutoFilter 1, ""
.Curr
...
您寻找的解决方案有点难以提供。 从下拉菜单中选择NATIONALITY有几个棘手的部分。 我在脚本中使用了.querySelector()来简化它。 但是,无论您想从下拉列表中选择哪个国家/地区,它都可以满足您的需求。 试一试: Sub GetInfo()
Dim IE As New InternetExplorer, HTML As HTMLDocument, post As Object, URL$
URL = "https://eservices.mol.gov.ae/SmartTa
...
我认为这个问题是复制和粘贴一张图片到另一张图片的副本 ,无论您使用下面的代码...这应该将图片粘贴到与原始图纸大致相同位置的新图像。 Sub MG15Jun43
Dim pic As Shape, rng As Range
For Each pic In ActiveSheet.Shapes
If pic.Type = msoPicture Then
pic.Copy
With Sheets("Sheet2")
.Select
.Range(pic.
...
这应该工作
Sub CopyDataToPIVOTDATASheet()
Dim PivotDataSheet As Worksheet
Set PivotDataSheet = ThisWorkbook.Sheets("PIVOTDATA")
Dim CurrentWorkSheetIndex As Long
Dim CurrentWorkSheet As Worksheet
Dim CurrentWorkSheetLastRow As L
...
你应该收到错误
Set ws = this.ComboBox1.GetItemText(this.ComboBox1.SelectedItem)
您正在尝试将对象设置为字符串。 尝试使用
Set ws = Sheets(this.ComboBox1.GetItemText(this.ComboBox1.SelectedItem))
这实际上会为您提供该变量中的ws对象。 表格是工作簿中工作表的集合。 您可以按索引编号或工作表名称进行选择。 You should be getting an error
...
}

我要回帖

更多关于 vba获取某个sheet名 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信