小编Chr*_*dal的帖子

Excel VBA尝试在值列表中查找最小值的地址

我是Excel VBA编程的新手,在尝试使用Find方法捕获值列表中最小值的地址时遇到了问题.以下是我的代码,我已经包含3个截图来说明问题.任何输入都表示赞赏,提前谢谢!!

Sub Max_Min_Test()

    Dim Largest As Long
    Dim Smallest As Long
    Dim FirstPlace As Range
    Dim LastPlace As Range

    Largest = WorksheetFunction.Max(Range("A2:A8"))
    Smallest = WorksheetFunction.Min(Range("A2:A8"))

    Range("A10").Value = Largest
    Range("A11").Value = Smallest

    Set FirstPlace = Range("A2:A8").Find(what:=Largest)
    Set LastPlace = Range("A2:A8").Find(what:=Smallest)

    Range("B10").Value = FirstPlace.Address
    Range("B11").Value = LastPlace.Address

End Sub
Run Code Online (Sandbox Code Playgroud)

在第一个屏幕截图中,单元格A10和A11显示A2:A8中的最大和最小值,单元格B10和B11显示列表中最大和最小值的地址.在这种情况下,地址是正确的.
第一个截图

在第二个屏幕截图中,单元格B10正确显示了最大值的地址,但单元格11显示了错误的地址.A7显示为最小值的地址,而不是A8.
第二个截图

在第三个屏幕截图中,单元格B10仍然正确显示最大值的地址,但单元格B11也显示相同的地址.在我看来,我的代码不会捕获最小值的地址,而是使用与最小值相同的第一个数字的值的地址...
第三个截图

excel vba

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

如何在 VBA 中调暗和设置可变工作簿名称?

我有一个每周创建的工作簿,它具有可变名称结构。该名称结构如下:Week of YearInvoicedate。所以可能会调用一个示例文件1_Invoice_01052018.xlsm

我必须每周更新报告。我想将变量工作簿名称声明为 VBA 中的变量。我有另一个工作簿,其中包含通过 VBA 创建的报告的输出。在另一个工作簿中,我希望能够调用Invoice电子表格,但由于它有一个变量名称,我在查找它时遇到了问题。所以我把下面的VBA放在一起。

Sub Test()

Dim wb As Workbook
Dim ws As Worksheet

Set wb = "*Invoice*" & ".xlsm"
Set ws = Sheets("Sheet1")

wb.Activate
ws.Select

End Sub
Run Code Online (Sandbox Code Playgroud)

但是,这会导致“类型不匹配”错误。

我还尝试了以下方法:

Sub Test2()

Windows("*Invoice*" & ".xlsm").Activate

End Sub
Run Code Online (Sandbox Code Playgroud)

这也导致了错误。

关于如何在 VBA 中将变量工作簿名称设置为变量的任何想法?我一次只会打开其中一本工作簿,所以我不会遇到任何问题

variables excel vba

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

标签 统计

excel ×2

vba ×2

variables ×1