Tag: excel 2010

ThisWorkbook.ChangeFileAccess xlReadWrite在VBA窗口中为工作簿创build多个VBAProject

我的工作簿有以下公开事件: Private Sub Workbook_Open() ThisWorkbook.ChangeFileAccess xlReadOnly End Sub 然后这个button: Sub UnlockDeveloper() Dim pwd As String pwd = InputBox("Enter developer password:", "Password") If pwd = "password" Then If ThisWorkbook.ReadOnly = True Then ThisWorkbook.ChangeFileAccess xlReadWrite End If Else MsgBox ("Incorrect password.") End If End Sub 这一切都工作正常,但通常,但有时运行UnlockDeveloper子导致VBAProject在VBA窗口中出现两次,我无法知道哪个是真正的文件。 如果我改变了错误,那么一旦closuresExcel,更改就会丢失。 任何人有任何想法如何防止这一点?

Excel VBA项目已生成多个工作簿对象

我负责一个非常大的Excel 2010电子表格,其中包含各种外部数据源(包括Bloomberg,65个工作表,vba模块和其他vba加载项的参考)的链接。 我注意到VBA项目已经获得了多个工作簿对象。 有标准的ThisWorkbook。 但是,许多工作表也被Excel转换成Workbook对象,将原始工作表保留为前一个工作表的副本,减去代码。 这似乎不是任何人的行为的结果。 的确,我不认为有多个Workbook对象是可能的! 例如,我有一个名为wksInputs的工作表,现在已经变成一个Workbook对象,而原来的wksInputs现在被称为wksInputs1。 我无法删除wksInputs Workbook对象。 请有人帮忙解释一下这里发生了什么,以及我怎么能解决这个问题…? 非常感谢。

调用一个用户窗体并返回一个值

我有一个VBA代码这就是Auto_Open。 它做了一些检查,然后提示用户input用户名和密码。 我用userform_name.show调用了这个用户userform_name.show 。 我的问题是我怎么能返回一个Boolean从我的Auto_Open从userform代码。 我将validation证书是否正确的代码链接到表单上的“login”button。 这是产生布尔的代码。 我需要将其返回到Auto_Open。 Private Sub loginbutton() Dim bool As Boolean Dim lrup Dim r As Long Dim pass As String loginbox.Hide 'are fields empty Do While True If unBox.Text = "" Or pwBox.Text = "" Then MsgBox ("You must enter a Username and Password") Else Exit Do End If loginbox.Show […]

防止closures工作簿

有这个macros的ABC.xls文件。 现在,当我按下Ctrl + M时,macros有一个被调用的子组件。 这个小组将打开一个打开文件对话框,用户可以select一个CSV文件。 所以基本上,这个macros用于处理和保存CSV文件。 下面是按Ctrl + M被调用的代码。 Sub runProperChangeSubroutine() ' Assigned to shortcut key CTRL + M. file_name = ActiveWorkbook.Name ' Gets the file name. Application.Run file_name & "!ChangeSub" End Sub 当用户closures工作簿时,我必须testing一个像CSV每一行的条件都有一个终止string。 如果该终止string不存在,我应该popup一个消息框给用户,并防止closures工作簿。 所以我做了以下… Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim improperRowNumber As Integer Dim BlnEventState As Boolean improperRowNumber = returnImproperRow() BlnEventState = Application.EnableEvents […]

从Excel VBA子string着色:为什么一些明显的方法不起作用?

我一直在构build一些有趣的可视化,这些可视化依赖于VBA代码为Excel中的子string设置不同颜色的能力。 对于包含string的单元格,其语法如下所示: rCell.Characters(start,end).Font.Color=SomeColour 我的应用程序构buildstring,并通过将新string附加到现有值上,然后设置新string的颜色,在一个步骤中设置颜色值。 这没有奏效。 从一个完整的string开始,然后着色多个子string是行不通的。 两个简单的例程说明不同之处: Sub TestColourString1() 'designed to show that substring colour can be done to preexisting string Dim rngTestString As Range Set rngTestString = Range("colour_string") rngTestString.Value = "red green blue" rngTestString.Characters(1, 4).Font.Color = RGB(255, 0, 0) rngTestString.Characters(5, 10).Font.Color = RGB(0, 255, 0) rngTestString.Characters(11, 14).Font.Color = RGB(0, 0, 255) End Sub Sub […]

在Excel 2010中,通过范围内的绝对值对单元格进行着色

我正在寻找颜色Excel 2010中的值的表格的绝对值。 基本上,如果我有桌子: 细胞被细胞的原始颜色着色。 我想要做的是颜色由单元格的绝对值 ,所以用这个表的单元格着色: …但第一个表的值(真实值)。 任何想法如何可以做到这一点? 通过GUI或与VBA?

excel – vba – userform – frame – 设置滚动条位置

如何设置一个框架(在用户窗体内)的滚动条位置? 案子: 我有一个具有dynamic内容的用户窗体中的框架。 所以如果内容太大而不适合框架,它(dynamic地)在该框架中创build一个滚动条。 滚动条还具有dynamic值,跟随框架内容的大小。 更新滚动条的代码如下所示: With userform1.frame1 'dynamic size .ScrollHeight = param1 * param2 .ScrollWidth = .InsideWidth * 30 End with 所以我想有一些东西把滚动条发送到底部的位置! 我怎么做? 提前致谢

Excel和更改两个下拉列表之间的值

我有两个下拉列表 – 一个是依赖于其他 – 意思是如果我从A1列表中select一个特定的值,一个特定的列表出现在A2。 这工作得很好。 但是,当我在A1中更改值时,A2保留在单元格中,直到我单击列表中 – 那么A2中的值将根据我的select而改变。 例如,如果列表1是['是','否']并且列表为是:[1,2,3]否:[4,5,6]。 首先我为A1select“是”,然后为A2select2。 然后,如果我为A1select“否”,则“2”保持在A2中,直到我实际上点击A2来select一个新值(4,5,6)。 一旦我改变了A1的select,有什么办法可以“清除”A2? 谢谢!

我可以在Excel 2010精简版中使用VBA吗?

我有MS-Excel 2010“入门版” – 它被捆绑到预先构build的PC中。 这个版本是否支持VBAmacros? 我不能说。 我搜查了一下,现在还不清楚。

在退出我的子程序之前,是否应该再次打开.CutCopyMode?

为了优化我的代码,我closures了几个Application Object成员属性; 其中一个特别是.CutCopyMode属性 。 Sub MyProcedure() With Application .ScreenUpdating = False .EnableEvents = False .CutCopyMode = False End With ' lots of code here 我应该再次打开.CutCopyMode(例如True)与他人之前,我的子完成? ' lots of code here With Application .ScreenUpdating = True .EnableEvents = True .CutCopyMode = True '<~~ ??? End With End Sub