返回地址的行,该地址是单元格中的值

时间:2017-11-03 00:38:03

标签: vba excel-vba excel

我有几个包含其他单元格地址的单元格,例如:

  • K6值= $ F $ 95
  • K7价值= $ F $ 137

我想将每个值的行分配给变量并附加不同的列。我试过这样做但没有成功:

    Dim X1 As String
    Dim X2 As String
    Dim Y1 As String
    Dim Y2 As String
    Dim ChtSheet As Chart

    Set ChtSheet = ActiveWorkbook.Charts.Add
.    


     X1 = "C" & Sheets("Sheet1").Range("K6").Rows.Value      'I want X1 = "$C$95"
        X2 = "C" & Sheets("Sheet1").Range("K7").Rows.Value      'I want X2 = $C$137

    Y1 = Sheets("Sheet1").Range("K6").Value  'where the value in this cell is $F$95
    Y2 = Sheets("Sheet1").Range("K7").Value  'Where the value in this cell is $F$137

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

让我们专注于含有$ F $ 95的K6:

X1 = Sheet1.Range(Sheet1.Range("K6").Value).EntireRow.Cells(1, "C").Address

将产生“$ C $ 95”。

请注意,Sheet1被假定为Excel选项卡上名为“Sheet1”的工作表的CodeName。 CodeName是一种更好的方式来引用工作表,因为即使从Excel重命名工作表,它也保持不变。您可以通过单击Project Explorer中的工作表并显示其属性(F4),从VBA编辑器中查看和更改工作表的CodeName;只需指定(名称)属性。

上面的原理是使用K6中的值(一个地址)来获取该地址指向的范围,然后考虑整个行的单元格位置(1,“C”),即第1行,列“C”。无论K6中提到哪一列,结果都会以“C”列结束。

不确定你想用X1做什么;你通常不需要这个字符串,因为你可以使用范围:

Dim myRange As Excel.Range

Set myRange = Sheet1.Range(Sheet1.Range("K6").Value).EntireRow.Cells(1, "C") 'Who cares about the address :-)
'... do something with this range...