簡體   English   中英

如何使用另一個工作表中單元格內的單元格地址更改具有 Excel vba 的單元格的值?

[英]How to change the value of a cell with Excel vba using a cell address that's inside a cell in another worksheet?

我們有兩個工作表:

  1. 參考
  2. 操作員

假設參考表中的單元格 d2 包含值 $a$25 。

如何使用 Excel VBA 更改運算符表中單元格 $a$25 的值(引用參考表中 d2 的地址)?

我試過的:

  1. 使用變量捕獲 d2 中的引用:
    Dim NewRNG as Range
    NewRNG = Range(Range("d2").value).value

這里沒有運氣。

  1. 在 Operator 中查找參考單元格並使用找到的單元格的地址
    Sub Find_Cell()
    
    Dim RNG As Range
    Dim NewRNG as Range
    
    With Sheets("Operator").Range("A:A")
    
        Set RNG = .Find(What:=Sheets("Reference").Range("d2"), _
                    After:=.Cells(.Cells.Count), _
                    LookIn:=xlValues, _
                    LookAt:=xlWhole, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlNext, _
                    MatchCase:=False)
    End With
                    
    NewRNG = RNG.Address
    
    NewRNG.select
        
    End Sub

**在這種情況下,我不能將 rng.address 設置為變量

像這樣:

Dim addr As String
addr = Sheets("Reference").Range("D2").Value   'get the cell address

Sheets("Operator").Range(addr).Value = "Test"  'pass the address to Range()

要定義 NewRNG 變量,您必須使用“Set”!

Option Explicit

Sub setRange()
    Dim NewRNG As Range
    Set NewRNG = Range(Range("B2").Value)
    
    Range("B5").Value = NewRNG.Address
    Range("B6").Value = NewRNG.Value
    
    Sheets("Operator").Range(Range("B2").Value) = "Test"
End Sub

Sub setRange2() ' variant including a check and error handling
    Dim NewRNG As Range
    On Error Resume Next
    Set NewRNG = Range(Range("B2").Value)
    If Err() Then
        MsgBox ("You need to set a Range definition (e.g. ""B3"") in field B2!")
        Exit Sub
    End If
    On Error GoTo 0
    
    Range("B5").Value = NewRNG.Address
    Range("B6").Value = NewRNG.Value
    
    Sheets("Operator").Range(Range("B2").Value) = "Test"
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM