小编The*_*Man的帖子

打开工作簿时,Workbook_Open sub不会运行?

该程序应该创建一个按钮,用户可以按下该按钮来激活不同的子.从我的在线搜索看,下面的子项似乎应该在打开工作簿时激活,但事实并非如此?

我究竟做错了什么?

Option Explicit
Private Sub Workbook_Open()
Dim btn As Button
Dim rng As Range
With Worksheets("Sheet1")
    Set rng = .Range("B2:C2")
        Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height)
    With btn
        .Caption = "To begin the program, please click this button"
        .AutoSize = True
        .OnAction = "TableCreation1"
    End With
End With
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

16
推荐指数
3
解决办法
6万
查看次数

如何在Excel VBA 2010中的IF-THEN语句中使用复选框?

我需要使用IF-THEN语句的复选框值.根据用户检查的内容,我必须计算事物的变化方式.但是,我无法弄清楚如何使用复选框值,或如何检测它们.这是我到目前为止的代码:

Private Sub Workbook_Open()
    Range("E1:F7,A1:A4,B1:B4,C1:C3").Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0 …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-2010

10
推荐指数
2
解决办法
17万
查看次数

Solver.xlam丢失了吗?

我在PC上的Excel 2010中创建了一个程序,该程序依赖于Excel的内置解算器.我确保它适用于Excel 2010和Excel 2013 for PC.然后我尝试在Excel 2011上使用相同的程序,并遇到了一个问题.

当我尝试编译项目时,它会显示"编译错误:无法找到项目或库".

我记得在启用解算器之前在PC端发生了这种情况,所以我进入了工具 - >插件,然后启用了Solver.Xlam.

启用S​​olver.Xlam的图片

但是,我得到了同样的错误.

我进入了开发人员端,然后转到Tools - > Reference,发现Solver.Xlam丢失了.

失踪的Solver.Xlam的图片

我意识到它认为解算器所在的地址是解算器在我的PC上的位置,而不是它在OSX上的位置.当我在OSX上搜索时,我发现求解器在/Applications/Microsoft Office 2011/Office/Add-Ins.

所以我点击底部的"浏览"并选择Solver.Xlam.

选择Solver.Xlam

我选择了Solver.Xlam.

Solver.Xlam现已被选中

但现在我得到了一个不同的错误.

错误

弹出此错误后,它正在寻找Solver.Xlam的位置重置为先前的位置.

这是什么问题?我该如何解决这个问题?

excel vba excel-2011 excel-vba-mac excel-2013

5
推荐指数
2
解决办法
3万
查看次数

一个程序将返回一行中最小值的单元格地址?

所以我有一个看起来像这样的图表.假设左上角值1在单元格A1中:

x=    1    2    3    4    5    6    7    8

      4    3    2    1    2    3    4    5

      9    8    7    6    7    8    9    10

      8    7    6    5    4    3    2    1

Sum= 21   18   15   12   13   14   15    16
Run Code Online (Sandbox Code Playgroud)

有1到8的x值,以及使用它下面的等式或其他东西得到的三列值.总和是低于其相应x值的三个值的总和.

我试图找出能够通过总和行找到最小值的东西,然后将它的相应x值分配给变量.我还需要将该x值左侧和右侧的值分配给其他变量.

对于这个特定的图表,12是总和中最小的,所以我会分配variable1 = 4,因为那是该列的相应x值.然后我的第二个变量(称为lowerbound3)将等于3,因为它位于x = 4的左侧,而我的第三个变量(称为upperbound)将等于5,因为它位于x = 4的右侧.

如果我可以获得与最小总和相对应的x值返回的单元格地址,那么我可以将其分配给变量,然后简单地从该单元格偏移以分配其他变量.即使我可以创建一个程序来返回最小和值的单元格,我也可以偏移到x行,然后从那里开始.

我该怎么办呢?

TL:DR:要问得更清楚,因为那是很多单词:程序看起来会检测到总和行中的最小值,并返回该值的单元格地址?

行的长度是未知的,并且变化很大,但是给出了列的长度.它们确实根据问题而改变,但它们总是会被人知道.所以我将始终知道列中有多少行,但我不知道连续多少列.

这是我一生中写过的最令人困惑的事情,但我希望我已经足够清楚地解释了它.

顺便说一句,你们真的很棒.到目前为止,我已经完成了这个项目,这都是因为你有多大帮助.老实说,我觉得我还是会和你们一起陷入困境!你愿意容忍一个新手不停的问题.

excel vba excel-vba excel-2010

4
推荐指数
2
解决办法
5190
查看次数

我是否正确使用了isnumeric函数?

该程序用于将一列数据从累积转换为非累积.在我的工作表上,我有A1,B1和C1,文本分别为非累积,累积和转换.我在A1下面有数字1到10,然后它们累计在B1下面.C1是我想要将B列转换回非累积的地方.

的则IsNumeric用于使用C等于B.数据的第一行应检测的标题是它上面正在评估的数量的数据的第一行,从而知道没有计算必须执行.对于其余的人来说,它会看到它正在评估的数字之上的数字是一个数字,因此必须进行计算.

我的问题是它无法正常工作.我认为原因是因为IsNumeric()不断回归是假的.我应该使用不同的功能吗?单元格引用在IsNumeric中不起作用吗?

这是程序!

Option Explicit

Dim i As Variant

Sub Conversion()

Sheets("Test Sheet").Select

For i = 1 To 10
    If IsNumeric("B" & i) = False Then
        Range("C" & i + 1) = Range("B" & i + 1)
    Else: Range("C" & i + 1) = Range("B" & i + 1) - Range("B" & i - 1)
    End If
Next

End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-2010

3
推荐指数
1
解决办法
3万
查看次数

如何为下一个子程序保留此变量的值?

我是一名初学程序员(没有经验)学习Visual Basic来完成我现在正在做的工作.我已经读了一天左右,最后决定开始制作所需的程序!

但是,我遇到了一些问题.

现在我有两个子程序.第一个子程序允许用户输入他们有多少数据对,这样我就可以创建一个表来供他们填写.这样他们的数据就在我以后可以参考的正确位置.

然后,他们在完成输入数据后按下一个按钮以启动一个不同的子程序,该子程序将对他们输入的数字进行一些计算.我的问题是我需要一个变量来说明他们必须将多少数据对转移到第二个例程.

在继续之前,这是我的代码到目前为止!(你必须在窗口中向下滚动)我还应该注意第二个子程序在一个单独的模块中.

Option Explicit

Public Counter As Long


Sub TableCreation1()

    ActiveSheet.Shapes.Range(Array("Button 5")).Select

    Selection.Delete

    Counter = InputBox("How many pairs of data do you have? ")

    Range("A1") = "Time (days)"

    Range("B1") = "CFL (measured)"

    Range("A1:B1").Font.Bold = True

    Columns("A:B").EntireColumn.EntireColumn.AutoFit

    Range("A1").Select

    ActiveCell.Range("A1:B" & Counter + 1).Select

    Selection.Borders(xlDiagonalDown).LineStyle = xlNone

    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    With Selection.Borders(xlEdgeLeft)

       .LineStyle = xlContinuous

       .Weight = xlThin

    End With

    With Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        .Weight = xlThin

    End With

    With Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

        .Weight = xlThin …
Run Code Online (Sandbox Code Playgroud)

excel vba scope excel-vba

2
推荐指数
1
解决办法
2万
查看次数

为什么这个程序应该对每列进行求和,仅在一列之后停止?

该程序创建一个数字表,然后尝试逐行加总.我正在IsBlank()测试最顶层的单元格是否为空白.如果它是空白的,它应该结束循环,但如果不是,循环应该继续.但是,它在第​​一次循环后不断结束.这是为什么?

我觉得这很明显.

编辑:我应该注意到整个"反"的东西都在那里,因为如果这有效的话我会开始玩这个.它不起作用,所以我在这里!

Option Explicit
Dim Counter As Long
Dim i As Long
Dim col As Long
Dim row As Long

Sub SumRange()
    For col = 1 To 8
        For row = 1 To 6
            Cells(row, col) = Rnd
        Next row
    Next col
    Counter = 6
    For i = 1 To 9
        If IsEmpty(Cells(1, i)) = False Then
            Cells(Counter + 1, i) = Application.WorksheetFunction.Sum(Range(Cells(1, i), Cells(Counter, i)))
        Else
            End If
        End
    Next
    MsgBox Cells(4, 5)
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-2010

2
推荐指数
1
解决办法
104
查看次数

工作表上是否有等效的 VBA 函数 Cells?

有什么方法可以使用索引号来引用特定的单元格,比如在 VBA 中如何Cells(3,2)引用单元格 C2。

我希望"=CELLS(3,2)"能奏效,但遗憾的是,这似乎并不存在。有没有另一种方法可以做到这一点?

编辑:

我应该澄清一下,我需要在 SUM() 工作表函数内使用它,因此它需要返回单元格引用,而不是单元格内的值。

excel excel-formula

2
推荐指数
1
解决办法
1651
查看次数