小编Dav*_*d G的帖子

VBA Excel简单的错误处理

我尽可能多地在线查看(微软支持网站除外,因为某些原因在工作时被阻止).我试图简单地跳过一个错误.我在这里写的代码是简化的,但应该以相同的方式工作.

我的代码应该做什么: 我的一个潜艇在循环中创建形状并命名它们(btn_1,btn_2等).但在创建它们之前,它会调用一个尝试删除它们的子类,以免创建重复项.该子循环遍历(btn_1,btn_2等)并使用以下方法删除形状:

for i = 1 to (a certain number)
    Set shp = f_overview.Shapes("btn_" & i)
    shp.delete
next
Run Code Online (Sandbox Code Playgroud)

当然,它不会被删除,因为它根本就不存在.我发现在大多数情况下,推荐的修复是在设置形状之前添加(在错误恢复下),因为我得到一个错误,说它不存在.我已经在循环内部,循环之前等尝试过它,如下所示:

for i = 1 to (a certain number)
    On Error Resume Next
    Set shp = f_overview.Shapes("btn_" & i)
    shp.delete
next
Run Code Online (Sandbox Code Playgroud)

据我所知,如果形状不存在,它应该循环通过,但是我仍然得到相同的错误,无论我是否添加On错误恢复下一个!我究竟做错了什么?

编辑:形状确实存在时没有错误.

error-handling excel vba excel-vba

20
推荐指数
4
解决办法
2749
查看次数

从列中查找值并快速返回其单元格的行号

是)我有的

我有一个包含零件号的文件和每个零件的几个供应商.共有1500个零件,每个零件有20个可能的供应商.为简单起见,我们假设部件列在A列中,每个供应商在此之后占据一列.供应商下的值是手动输入的,但并不重要.

在另一个工作表中,我有一个从Access数据库导入的部件列表.导入零件清单,但不导入供应商信息.在这两种情况下,每个部分只出现一次.

我想做的事

我只想将第一张表中的供应商信息与导入列表中的部件相匹配.现在,我有一个功能,它通过供应商遍历列表中的每个部分,将供应商信息复制到一个数组中,在导入的部件列表中找到部件号(总是有一个唯一匹配)并将数组复制到它旁边(内有供应商信息).有用.不幸的是,每次使用它时,find函数都会显着减慢.我知道它是通过各种测试的罪魁祸首,我无法理解为什么它减慢速度(从每秒200次循环迭代开始,减慢到每秒1次并且Excel崩溃).我可能有某种泄漏?文件大小始终为7mb.这里是:

Function LigneNum(numAHNS As String) As Integer
    Dim oRange As Range, aCell As Range
    Dim SearchString As String

    Set oRange = f_TableMatrice.Range("A1:A1500")
    SearchString = numAHNS

    Set aCell = oRange.Find(What:=SearchString, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

    If Not aCell Is Nothing Then
        'We have found the number by now:
            LigneNum = aCell.Row
        Exit Function
    Else
        MsgBox "Un numéro AHNS n'a pas été trouvé: " & SearchString
        Debug.Print SearchString & " not found!"
            LigneNum = 0 …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

5
推荐指数
1
解决办法
1206
查看次数

根据多个条件返回其他工作表中的匹配值

警告:复杂情况需要文本墙

我有什么数据

在表A中,我在A列中有字母数字,有时在B,C,D列中有供应商.

 colA      colB   colC   colD

H-19328    SupA   SupB   SupA
H-12801    SupC   SupD
H-32829    
H-23123    SupB   SupC
.......    ....   ....   ....
Run Code Online (Sandbox Code Playgroud)

在表B中,我在A列中有字母数字,在B列中有1个供应商.我还在下一栏中有一堆其他信息.

 colA      colB    colC   colD

H-19328    SupA   stuffs stuffs 
H-52601    SupA   stuffs stuffs
H-3279     SupA   stuffs stuffs
H-4987123  SupB   stuffs stuffs
.......    ....   ...... ......
Run Code Online (Sandbox Code Playgroud)

在表A中,字母数字编号在列表中是唯一的.表A中的数字在表B中可能有也可能没有匹配的数字,反之亦然.即使数字匹配,供应商也可能匹配,也可能不匹配.

我想做的事

对于表A中的每个数字,我想检查表B是否与关联的供应商保持该号码.例如,对于第一个数字H-19328,我将检查表B是否具有:

 colA      colB    colC   colD

H-19328    SupA   stuffs stuffs   < This could match twice as it was twice in A
H-19328    SupB   stuffs stuffs
Run Code Online (Sandbox Code Playgroud)

我不知道数字/供应商组合是否匹配,如果匹配,我不知道它将匹配多少次.我想从其他列C和D中的表B中检索值.

我有什么代码

我将表A中的值放在一个字典中.键是数字,供应商信息是与每个键绑定的数组.这本词典效果很好.问题不在于词典,如果你对他们不好,你仍然可以帮助我.

现在我有一个循环,将每个键+供应商与表单b列表相匹配,并返回匹配的次数.为了消除混淆,Dict_Sup是词典.Dict_sup.items(1)是一个包含供应商的数组.Dict_sup.items(1)(0)是该数组的第一个条目.Dict_sup.items(1)(supcount)是该数组的最后一个条目.

For i = …
Run Code Online (Sandbox Code Playgroud)

arrays excel vba excel-vba

5
推荐指数
1
解决办法
979
查看次数

获取光标在单元格中的位置

我正在尝试在公式栏中创建一个自定义右键单击菜单(当您在单元格中右键单击时出现的那个,例如键入).我已经设法在我的右键单击中获取了我想要的按钮,但我找不到如何确定光标在单元格内的位置.

例如,如果光标位于单元格中的第5个字符之后,如何在BeforeRightClick事件发生之前或期间确定?我发现的唯一问题是相反的问题; 使用SendKeys将光标放在单元格的特定部分:

'===================================================================================
'- MOVE CURSOR IN THE FORMULA BAR AS REQUIRED
'- Brian Baulsom September 2007
'===================================================================================
Sub test()
    Dim c As Integer
    c = 3
    '------------------------------------------------------------------------------
    Range("A1").Select      ' select cell
    SendKeys "{F2}", True   ' activate formula bar. cursor is to right of contents.
    DoEvents
    '------------------------------------------------------------------------------
    '- move cursor 3 characters to the left in the formula bar
    '- or in the cell if Tools/Options/Edit .. "Edit directly in cell" is checked
    SendKeys "{LEFT " & CStr(c) & …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

5
推荐指数
1
解决办法
1813
查看次数

从另一个类描述类的所有现有元素

我想做什么 我是一个完整的Java初学者,昨天开始基础知识.我安装了Eclipse,我正在尝试制作一个学校校长菜单,该菜单可以列出学校里所有学生和教师的名单(并添加新的学生和教师,但这是为了以后).现在我只想展示现有的学生,因为我没有创建任何教师.

我拥有的 目前我已经创建了我的学生课程:(如果您看到任何错误或错误的表格,请告诉我!)

public class Student {

    String name;
    int age;
    String program;

    public Student(String StudentName){
        this.name = StudentName;
    }

    public void PrintInfo(){
        System.out.println(name + " is a " + age +" year old student in " + program);
    }

    public static void main(String[] args) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我也有这个菜单类,首先要求学生群体:

import java.util.Scanner;
public class Menu {

    public static void populate(){
        Student s01 = new Student("David");
        s01.age = 12;
        s01.program = "Elementary School";
        s01.PrintInfo(); //******I would like to remove this part****** …
Run Code Online (Sandbox Code Playgroud)

java class

4
推荐指数
1
解决办法
86
查看次数

更改自定义 Excel 功能区下拉菜单的大小

在此处输入图片说明

我在包含工作簿中所有可见工作表的功能区中有这个下拉列表。用户可以在其中选择一个工作表以跳转到它。这很重要,因为此工作簿中有大量工作表。不幸的是,当工作表的名称很长时,它不会完全显示。我想让它更宽。

我使用 Microsoft Office 的 CustomUI 编辑器使用我不太熟练的 XML 技能创建它。这是代码的一部分:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="InitS3Ribbon">
    <ribbon>
        <tabs>
            <tab id="s3Tab" label="S3 Menu">
                <group id="grGeneral" label="General">

                    <dropDown id="navigation" label="Navigation" getItemCount="GetNavigateItemCount" getItemLabel="GetNavigateLabel" onAction="MenuNavigate" getSelectedItemIndex="SetNavigateIndex" showLabel="true" />

                    <button id="bShowHideSheet" imageMso="PivotPlusMinusButtonsShowHide" label="Show/Hide sheets" size="normal" onAction="MenuShowHideSheets" />
                    <button id="bPreviousPage" imageMso="LeftArrow2" label="Previous sheet" size="large" onAction="MenuPreviousSheet" />
                    <button id="bNextPage" imageMso="RightArrow2" label="Next sheet" size="large" onAction="MenuNextSheet" />
                </group>
Run Code Online (Sandbox Code Playgroud)

我发现这个资源说它可以用SizeString属性进行更改,但我什至不确定如何或在何处将其包含在我的代码中。在我看来它应该在 VBA 部分?我不确定我是否理解,我希望得到指导。我不确定现在是否编辑 XML 或 VBA 以及如何编辑。

xml excel vba ribbon

4
推荐指数
1
解决办法
2992
查看次数

文本框的下划线属性不像其他文件一样工作

我只是想使用VBA在工作表文本框中为某个特定字符添加下划线.它应该非常简单,我可以毫无问题地使用Bold和Italic.

我有以下子

Sub ew()
    Dim txt1 As Shape
    Set txt1 = Sheet1.Shapes("txt_1")
    txt1.TextFrame.Characters.Text = "Bold and Underline this"

    txt1.TextFrame.Characters.Font.Bold = True
    txt1.TextFrame.Characters.Font.Italic = True
    txt1.TextFrame.Characters.Font.Underline = True
End Sub
Run Code Online (Sandbox Code Playgroud)

代码在最后一行失败,这非常奇怪,因为它适用于前两行.错误(1004)表示"无法定义Font属性的下划线功能".

要重新创建问题,请将我的子文件转换为新的Excel文档并创建名为"txt_1"的文本框,这就是运行它所需的全部内容.

如果有人知道它失败的原因,请帮忙!

excel vba excel-vba

0
推荐指数
1
解决办法
500
查看次数

标签 统计

excel ×6

vba ×6

excel-vba ×5

arrays ×1

class ×1

error-handling ×1

java ×1

ribbon ×1

xml ×1