简体   繁体   中英

How to assign a value to a Range created with Cells() in VBA

I want to assign a value to multiple cells using a Range . I must define the range using variables, that's why I use the Cells() parameters, but when I create a Range object with Cells , the compilator returns a 1004 error (Application-defined or object-defined error). The error also occurs when not using variables, for example with Range(Cells(0,0), Cells(1,0)) .

Here is my code

Dim Offset1 As Integer: Offset1 = 0
Dim Offset2 As Integer: Offset2 = 1
With ThisWorkbook.Worksheets("Sheet1")
  .Range(.Cells(Offset1, 0), .Cells(Offset2, 0)).Value = "NewValue"
End With

There are a few questions around your attempt but let me spell it out for you.

If you want to use the .Range() approach then it requires a qualified range of cells as the parameter.

This is what is expected (obviously within a With statement)...

.Range("A1:B10").Value = "NewValue"

... and if you want something like that but want it to be somewhat dynamic, then this as specified will produce the same result. You need to use .Address along with a proper row/column cell reference.

.Range(.Cells(1, 1).Address & ":" & .Cells(10, 2).Address).Value = "NewValue"

.Cells(1, 1) = Cell A1

.Cells(10, 2) = Cell B10

If you want to offset a specific cell, then you need a proper cell reference to begin with. Example, if you want 2 columns to the right and 5 rows down from cell B10, you would do this...

.Cells(10, 2).Offset(5, 2).Address

You should be able to adapt that to your code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM