“此”工作表上的单元格具有“该”工作表上的单元格的单元格地址。我正在尝试更改“那个”工作表上的单元格内容

时间:2019-05-01 21:11:34

标签: excel vba

我已停止使用相对寻址,并停止使用[]代替Range。起作用(但不正确)的代码在

下面
Dim rStat, cLoan As Integer
Dim tabname, xFrom As String
Sheets("Status").Select

[a1].FormulaR1C1 = "=Now()"

Sheets("Status").Select

cLoan = 0
Do While Cells(2, 2 + 3 * cLoan) <> Empty
    rStat = 4
    tabname = Sheets("Status").Cells(2, 2 + 3 * cLoan)
    While Cells(rStat, 1 + 3 * cLoan) <> Empty
        If (Sheets("Status").Cells(rStat, 3 * cLoan + 2) = Empty) _
        Or (Sheets("Status").Cells(rStat, 3 * cLoan + 3) = Empty) Then


Sheets(tabname).Range(Sheets("Status").Range(Sheets("Status").Cells(rStat, 1 
+ 3 * cLoan).Value)) = [a1]

Sheets(tabname).Range(Sheets("Status").Range(Sheets("Status").Cells(rStat, 1 
+ 3 * cLoan)).Value).NumberFormat = "m/d/yyyy"
        End If
        rStat = rStat + 1
    Wend
    cLoan = cLoan + 1
Loop

在第一次迭代中,空白单元格的测试失败,因此跳过了主题代码。测试通过了第二次迭代,因此rStat为5。cStat仍为零。

“状态”表上的数据结构[价值1000字]是

'   A   B   C                     P
'4  P3  aa  bb                    P3
'5  P4  cc
'6  P5      dd

该测试检测到C5为空白,因此任务是将日期[A1]放在选项卡名称表的P4 [A5的内容]中。即tabname.Range(“ P4”)=日期,其中P4来自A5。

代码将日期放置在P3而不是P4。

我确定该代码正在使用状态表上的P4地址[注意,数据P3存储在单元格P4中],并将该地址P3上的内容用作选项卡名称表上的目标。也就是说,tabname.Range(“ P3”)=日期。

我尚未确定这样做的方式或原因。

从2 ['store'和'format']行的第一行中删除“ .value”不会更改目标或其内容。仍然为tabname.Range(“ P3”)=日期。

我需要说出tabname.Range(“ Status.Range(” A5“))=日期的日期

如果我取出第一个“ Sheets(“状态”)。”,

Sheets(tabname).Range(Range(Sheets("Status").Cells(rStat, 1 + 3 * 
cLoan)).value) = [a1]

tabname.P3没有存储任何[空白?]-两次。 tabname.P3被选中,但在宏完成后为空。第三次运行相同的代码时,出现编译器错误:突出显示第二个“范围”,“参数数量错误或属性分配无效。”

我删除了“ .value”并再次运行。没有编译器错误,但tabname.O3突出显示,P3和P4仍然有假值,我将它们放在此处以查看是否忽略了它们或存储了空白。他们都被忽略了-仍然是我的虚假价值观。

我将假数据放在tabname.O3中,以查看其是否为空白或被忽略/仅突出显示,然后再次出现编译器错误。

任何建议将不胜感激。

我当前的代码运行正常。 状态表的宽度超过26列,因此我必须计算列引用[colLetter()]

    rStat = 4
    tabname = Sheets("Status").Cells(2, 2 + 3 * cLoan)
    While Cells(rStat, 1 + 3 * cLoan) <> Empty
        A_Stat = colLetter(1 + 3 * cLoan) & CStr(rStat) 

数据存储正确,并且下一行(该日期的格式)也有效。我期望比我做更多的格式化。

Sheets(tabname).Range(Sheets("Status").Range(A_Stat)).Value = [a1]

Sheets(tabname).Range(Sheets("Status").Range(A_Stat)).NumberFormat = 
"m/d/yyyy"

一切解决后,如何退出/离开该帖子?刚退出发布?指示中说“不要说谢谢”。

1 个答案:

答案 0 :(得分:1)

例如:

Dim thisSheet As WorkSheet
Dim thatSheet As WorkSheet

Set thisSheet = ThisWorkbook.Sheets("this")
Set thatSheet = ThisWorkbook.Sheets("that")

thatSheet.Range(thisSheet.Range("A5").Value) = Date

如果工作表“ this”上的A5包含值“ P4”,则此代码将填充工作表“ that”上P4中的日期