【问题标题】:save active cell address in a variable vba将活动单元格地址保存在变量 vba 中
【发布时间】:2015-02-08 23:38:34
【问题描述】:

以下代码没有将选择的地址存储在变量 sek 中,即使 sek 被声明为范围。它正在获取所选单元格的值。我需要将单元格的地址存储为范围而不是字符串。

Range(zro(fm)).Select
Set sek = Selection

我试过

set sek=Cells(application.address)

无法解决。 我是这样写的

For fm = 1 To tmp
Range(zro(fm)).Select
Dim sek As Range: Set sek = Selection
Range(zro(fm + 1)).Select
Dim sel As Range: Set sel = Selection
    Sheets("extract").Cells((5 * a) + 1, fm).Value = Application.WorksheetFunction.max(Range("sek:sel"))
    Sheets("extract").Cells((5 * a) + 2, fm).Value = Application.WorksheetFunction.Min(Range("sek:sel"))
Next

【问题讨论】:

  • 基本上我需要在一个范围内找到一个最大值,我有存储在数组中的范围地址。
  • 什么的最大值?你能展示你的数据样本并解释更多你需要什么吗?
  • 我正在使用 Application.WorksheetFunction.max(Range) 获取最大值。范围可以是($B$4:$B$25),所有这些地址都存储在一个数组中
  • 看来你混淆了一些概念。 Dim sek as Range : Set sek = selection 做你需要的,sek 是一个对象变量,它保留对在设置时选择的范围的引用。
  • 您能用简单的英语重新表述您的问题吗? @ShashankNaik

标签: excel vba range


【解决方案1】:

你需要的是

Application.WorksheetFunction.Max(Range(sek.Address & ":" & sel.Address))

这将组合范围。

您也不需要激活范围来分配它。你可以替换

Range(zro(fm)).Select
Set sek = Selection

Set sek = Range(zro(fm))

【讨论】:

  • 有没有办法将其保存为范围?因为我使用的 max 函数不允许字符串引用。
  • 您是否尝试将范围作为参数传递给函数?
  • 是的,正如在 qn 中编辑的那样,我需要在所有范围内获取最大值和最小值。
  • Application.WorksheetFunction.Max(Range(sek, sel))
【解决方案2】:

希望这会有所帮助。

 For fm = 1 To tmp
    Range(zro(fm)).Select
    Dim sek As Range: Set sek = Selection
    Range(zro(fm + 1)).Select 
    Dim sel As Range: Set sel = Selection
        Sheets("extract").Cells((5 * a) + 1, fm).Value = Application.WorksheetFunction.max(Range(sek,sel))
        Sheets("extract").Cells((5 * a) + 2, fm).Value = Application.WorksheetFunction.Min(Range(sek,sel))
    Next

【讨论】:

  • 我在定义范围时犯了一个错误。谢谢 :) 你不需要添加那个地址 (0,0) 谢谢大家:)
  • 另外,在这段代码中不需要选择范围——直接访问范围属性即可。
  • @ShashankNaik 你能用你的答案编辑我的代码吗?
  • 我做了,我认为它需要某种形式的批准
猜你喜欢
  • 2017-01-13
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
相关资源
最近更新 更多