在VBA中将范围设置为找到的字符串位置

时间:2018-08-14 13:43:52

标签: excel vba excel-vba

我正在尝试将VBA中的范围设置为我要查找的输入字符串的范围。完整的过程应该弹出一个对话框,以查找特定的字符串,找到该字符串,创建一个称为location的范围,将此范围设置为找到的字符串的范围,向右移动一定数量的列,并使用新的列值,在该范围内打印字符串。

现在的问题是由于某种原因,它没有将范围设置为找到的字符串的范围。

整个工作簿中只有一个字符串实例。

我对VBA还是比较陌生,所以有些命令我不知道或不了解它们如何工作。

Sub test()
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    Dim Inp As String
    Dim Loc As Range
    Dim Row As Integer
    Dim Col As Integer
    Dim NewLoc As Range
    Dim Sh As Worksheet

    Inp = InputBox("Scan ESD Tag")

    For Each Sh In ThisWorkbook.Worksheets
        With Sh.Columns("A")
            Set Loc = .Find(What:=Inp)
        End With
    Next

    Row = Loc.Row
    Col = Loc.Column + (3 * 5)
    Set NewLoc = Worksheets("Building 46").Cells(Row, Col)
    NewLoc.Value = "Over Here"

    Range("G2") = 6
End Sub

1 个答案:

答案 0 :(得分:2)

您的问题可能是您的最终块应位于循环内,否则Loc可能为空(除非在最后一张纸上找到该术语),并且您的代码将出错。您还应该首先检查是否已找到它,以免发生此类错误。

var domains = ["domain1", "domain2", "domain3"];

var options = domains.map(function(domain) {
  return {
    text: domain,
    value: domain
  }
})

// without map
// var options = [];
// for (var i=0; i<domains.length; i++) {
//   options.push({text: domains[i], value: domains[i]}
// }

var domainData = {
  type: 'combo',
  name: 'domain',
  width: 200,
  offsetLeft: 30,
  label: 'Test label',
  required: true,
  options: options
};

console.log(domainData)