Tag: userform

单击另一个工作簿中用户窗体上的一个button

我在互联网上search了几天,但我仍然找不到出路。 如果我能从这里得到一些提示,我会非常感激。 以下是我要做的细节: 我有一个名为A的只读工作簿,其上有一个button1。 通过点击button1,popup包含列表框和带有macrosbutton2的用户表单。 结果将打印在工作簿A的工作表2上。 我想要做的是使用另一个工作簿B调用VBA脚本来打开工作簿A并单击button1以激活用户表单。 然后,select所有行并通过单击button2运行macros。最后,将表2上的值复制到工作簿B. 为了简化问题,我写了一些代码来说明这种情况。 在工作簿A:button1: Public Sub Button1_Click() UserForm1.Show End Sub button2: Private Sub Button2_Click() Dim y As Long, z As Long z = 1 With Me.ListBox1 For y = 0 To .ListCount On Error GoTo EH If .Selected(y) = True Then For i = 1 To ListBox1.ColumnCount Sheets("Sheet2").Cells(z, i) […]

将工作表格保存为pdf

我试图保存一个工作表为PDF,我成功地做到这一点,但是当我打开生成的PDF文件在工作表中的所有文本框变形。 我怎样才能保持输出文本框的比例? 我在执行下面的代码的工作表中使用一个button: ThisWorkbook.Sheets(1).Select Sheets(1).Activate ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:="\\10.18.105.44\Setor Proteção RDs\01 – Ordens de Ajustes\Banco de ordens\AL" & alimentador & "\" & nome_arquivo & ".pdf", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=True Sheets(1).Select Range("D2").Select

将图像添加到用户窗体的工作表(excel vba)

我有一个浏览button的用户窗体,允许用户search他们的驱动器,并select一个图片(例如一个标志): Private Sub BrowseButton_Click() Dim strFileName As String 'use GetOpenFilename Method to select picture strFileName = Application.GetOpenFilename(filefilter:="Tiff Files(*.tif;*.tiff),*.tif;*.tiff,JPEG Files (*.jpg;*.jpeg;*.jfif;*.jpe),*.jpg;*.jpeg;*.jfif;*.jpe,Bitmap Files(*.bmp),*.bmp", FilterIndex:=2, Title:="Select a File", MultiSelect:=False) If strFileName = "False" Then MsgBox "File Not Selected!" Else 'load picture to Image control, using LoadPicture property Me.Image1.Picture = LoadPicture(strFileName) 'after any change vba has to be told […]

Excel VBA UserForm,进度条

我创build了一个应该像进度工具栏一样的用户表单,并以百分比forms显示我的实际进度。 我想在for循环中显示我的工具栏。 但是,只有当我点击了用户窗体,for循环才会继续。 我做错了什么? For k = 1 To 300 pctcompl = k * 100 / 300 UserForm1.Text.Caption = pctcompl & "% Completed" UserForm1.Bar.Width = pctcompl * 2 DoEvents UserForm1.Show Next k

用户窗体和工作表显示在Excel 2010中可用,但在Excel 2016中不可用

我遇到了更新显示在其后面的工作表的问题。 我能够重现与链接的testing工作表的问题。 在Excel 2010中,代码按预期工作。 在2016年(我假设2013年)工作表显示只更新如果代码停止在debugging器中。 另外,在代码完成之后,用户窗体需要20-30秒的时间才能将控制权交还给用户,然后在用户窗体上的字段之间甚至需要花费5-10秒。 我将不胜感激任何指导如何使这个代码与新版本的Excel一起工作。 UserForm1图像 UserForm1代码 Private Sub CommandButton1_Click() Call DisplayBanner Debug.Print "End – Button 1" End Sub Private Sub CommandButton2_Click() Call ExitForm End Sub 工作表图像 macros代码 Private xmlDoc As Object, Flow As Object Sub OpenForm() 'RUN button on Home sheet Application.ScreenUpdating = False UserForm1.Show vbModal End Sub Sub DisplayBanner() 'UserForm1.Hide Call […]

从另一个工作簿单元格select自动填充用户窗体

我有一个工作簿,曾经是一个有很多工作表,我现在已经把工作表分成不同的工作簿。 我现在遇到的问题是来自单元select的用户表单人口。 当所有的床单都在一起。 这段代码工作得很好。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not (UFMJobSelectForm.ActiveControl Is Nothing) Then Call UpdateJobSelectForm End If End Sub 但是,现在Userform在一个工作簿中,而这个代码在另一个工作簿中。 我不想参考图书馆,因为我需要它来打开和closures,因此可以访问其他人使用。 提前感谢您的帮助。 编辑:我有什么是4个不同的作业上的工作簿,我想select作业和用户窗体填充作业的详细信息。 我已经检测到用户表单的代码是打开的,然后调用然后使用updatejobselectform填充用户表单。 当所有工作表都在同一个工作簿中时,哪个工作。 然而,现在我已经把它们分开了。 当我运行这个代码现在床单里有我自己的工作簿我得到错误:运行时erroe 424对象所需。 所以我问的是剂量任何人都知道我可以检查一个用户窗体是从一个不同的工作簿加载,以及如何我可以得到使用窗体与单元格select从不同的工作簿进行交互。 再次感谢。

VBA UserForm查找多个logging,显示和循环

我正在创build一个用户表单,在表单上search唯一的ID,并显示位于同一行的关联数据。 我已经使用另一个StackOverflow问题的援助,但它不是完全适合我 有多个数据集到我正在寻找的唯一ID。 下面的代码,点击查找,显示第一个find的logging,并popup一个消息框,告诉用户在工作表中有多lesslogging。 点击确定后,用户表单closures。 我想编辑它,所以单击确定后,用户可以单击FindNextbutton,用户窗体将显示所有其他匹配原始search的logging。 以下是代码: Private Sub FindNext_Click() Dim nextCell As Range Set nextCell = Cells.FindNext(After:=ActiveCell) 'FindNext loops round to the initial cell if it finds no other so we test for it If Not nextCell.Address(external:=True) = ActiveCell.Address(external:=True) Then updateFields anchorCell:=nextCell End If End Sub Private Sub Find_Click() Worksheets("Master").Activate Dim strFind As String […]

VBA Userform文本框滚动从顶部开始

我有一个Excel用户窗体,需要多个滚动条的多行文本框。 当我点击一个文本框滚动,它从文本的底部开始。 当这发生在用户表单上的一个文本框时,我使用了这个: Userform1.TextBox1.SelStart = 0 和一切工作。 如果我尝试在同一个窗体中的多个文本框上使用它,则滚动条从不会出现在任何框中。 有谁知道如何解决这一问题? 更新: 发现一个奇怪的问题,我的帮助缩小了问题的范围:多个文本框,selstart = 0的作品在第一个框,但是我需要一个更大的数字selstart下一个文本框。 例。 下面的代码将滚动条放在两个文本框的顶部。 表单通过双击表单1显示,文本框的值是在初始化子文件中创build的。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) UserForm1.Show End Sub ————– Private Sub UserForm_Initialize() UserForm1.TextBox1.Value = Sheets("Sheet1").Cells(1, 1).Value UserForm1.TextBox1.SelStart = 0 UserForm1.TextBox2.Value = Sheets("Sheet1").Cells(2, 1).Value UserForm1.TextBox2.SelStart = 200 End Sub 但是我只能通过猜测和检查发现textbox2必须从200开始。 我不知道如何确定文本框应该在哪里启动。

Excel.VBA.UserForm.MultiComlumnListBox.ListBoxes

我目前正在进行一个项目,要求我使用多列列表中的值。 我有这个用户表单中的单列列表框,我想要一个选定的值给出选定的多列列表。 截至目前,我可以得到单个列表框突出显示,但由于一些奇怪的原因,值不被选中。 如果用户不select另一个列表值,我需要能够拉这些值。 我在这个论坛张贴新的,但我有一个Excel文件来演示我的问题,但不知道如何发布在这里。 由于我不知道如何上传文件,所以我编写了这个文件: Private Sub ListBox1_AfterUpdate() Me.ListBox2.Value = ListBox1.Column(1) Me.ListBox3.Value = ListBox1.Column(2) Me.ListBox4.Value = ListBox1.Column(3) Me.ListBox5.Value = ListBox1.Column(4) MsgBox ListBox2.Value & " = " ListBox3.Value & " = " ListBox4.Value & " = " ListBox5.Value ' Check values End Sub Private Sub UserForm_Initialize() With ListBox1 .ColumnCount = 15 .RowSource = ActiveSheet.Range("A1:E10").Address End […]

在列表框之间添加和删除项目

我正试图实现pipe理和交换位于我的UserForm两个列表框之间的“项目”。 IE我有列表框1中的项目(我使用多选),然后单击“添加”命令button,所有的项目被添加到列表框2。 – 这段代码的作品。 我也可以根据select或“全部清除”命令button从ListBox2中删除项目。 当我添加“删除”命令button使用类似的代码到“添加”命令button时,我得到一个错误。 我的目标是从ListBox1中删除项目,这样我就不会在ListBox2中重新添加或复制它们。 错误是“运行时错误”2147467259(80004005)“:未指定的错误”。 我已经把问题缩小到一个来源,但我不知道如何解决这个问题。 问题是我填充ListBox1的方式。 目前,我使用命名范围来填充ListBox1,这个命名范围是指表中的一列。 MyUserForm.ListBox1.RowSource = "ListOfItems" 如果我使用下面的代码,我不会得到相同的错误,一切工作正常。 With MyUserForm.ListBox1. .AddItem "Item 1" .AddItem "Item 2" .AddItem "Item 3" .AddItem "Item 4" End With 我真的想坚持第一个填充ListBox1的“方法”,因为命名的范围是dynamic的,并且经常变化。 这是有用的代码。 我用这个代码来“添加”项目到ListBox2(我已经编号的代码行,以便于参考): (1)For i = 0 To LIstBox1.ListCount – 1 (2) If ListBox1.Selected(i) = True Then (3) ListBox2.AddItem ListBox1.List(i) (4) End If (5)Next […]