Excel 使用VBA循环从a到C的端子值

Excel 使用VBA循环从a到C的端子值,excel,vba,Excel,Vba,我有一个excel表名为终端卷,在这张表中,有三个变量(终端LF(log Fisher成本)和CT成本)用作输入。我使用以下代码来处理这些问题 enter code here Sub InitiateValues() ReDim TrmPnts(11) '<<<<CHANGE HERE Total Point + SE -JJ Set ShDat = Worksheets("Data") Set ShDatPth = Worksheets("DataPath") Set

我有一个excel表名为
终端卷
,在这张表中,有三个变量(
终端
LF(log Fisher成本)
CT成本
)用作输入。我使用以下代码来处理这些问题

enter code here
Sub InitiateValues()
ReDim TrmPnts(11) '<<<<CHANGE HERE Total Point + SE -JJ
Set ShDat = Worksheets("Data")
Set ShDatPth = Worksheets("DataPath")
Set tvol = Worksheets("Terminal Volumes")
'ShDatPth.Range("B2:FB157").Value = 0
With TrmPnts(1)
    .Cpt = "T1"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(2, 1)
    .Col = ShDat.Cells(3, 1)
    .LFamt = tvol.Cells(2, 2)
    .CTamt = tvol.Cells(2, 3)
End With
With TrmPnts(3)
    .Cpt = "T2"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(6, 1)
    .Col = ShDat.Cells(7, 1)
    .LFamt = tvol.Cells(3, 2)
    .CTamt = tvol.Cells(3, 3)
End With
With TrmPnts(4)
    .Cpt = "T3"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(8, 1)
    .Col = ShDat.Cells(9, 1)
    .LFamt = tvol.Cells(4, 2)
    .CTamt = tvol.Cells(4, 3)
End With
With TrmPnts(5)
    .Cpt = "T4"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(10, 1)
    .Col = ShDat.Cells(11, 1)
    .LFamt = tvol.Cells(5, 2)
    .CTamt = tvol.Cells(5, 3)
End With
With TrmPnts(6)
    .Cpt = "T5"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(12, 1)
    .Col = ShDat.Cells(13, 1)
    .LFamt = tvol.Cells(6, 2)
    .CTamt = tvol.Cells(6, 3)
End With
With TrmPnts(7)
    .Cpt = "T6"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(14, 1)
    .Col = ShDat.Cells(15, 1)
    .LFamt = tvol.Cells(7, 2)
    .CTamt = tvol.Cells(7, 3)
End With
With TrmPnts(8)
    .Cpt = "T7"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(16, 1)
    .Col = ShDat.Cells(17, 1)
    .LFamt = tvol.Cells(8, 2)
    .CTamt = tvol.Cells(8, 3)
End With
With TrmPnts(9)
    .Cpt = "T8"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(18, 1)
    .Col = ShDat.Cells(19, 1)
    .LFamt = tvol.Cells(9, 2)
    .CTamt = tvol.Cells(9, 3)
End With
With TrmPnts(10)
    .Cpt = "T9"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(20, 1)
    .Col = ShDat.Cells(21, 1)
    .LFamt = tvol.Cells(10, 2)
    .CTamt = tvol.Cells(10, 3)
End With
With TrmPnts(11)
    .Cpt = "T10"
    .CptColr = "&H000088"
    .Row = ShDat.Cells(22, 1)
    .Col = ShDat.Cells(23, 1)
    .LFamt = tvol.Cells(11, 2)
    .CTamt = tvol.Cells(11, 3)
End With '<<<<<<CHANGE HERE
With TrmPnts(2)
    .Cpt = "SE"
    .CptColr = "&H004400"
    .Row = ShDat.Cells(4, 1)
    .Col = ShDat.Cells(5, 1)
End With
ReDim Mtx(156, 157) ' Cell Size X,Y -JJ
For i = 1 To 156 ' Cell Size X,Y -JJ 1 To 226
    For j = 1 To 157 ' Cell Size X,Y -JJ
        Mtx(i, j) = ShDat.Cells(1 + i, 1 + j)
        ShDatPth.Cells(1 + i, 1 + j) = 0
    Next
Next
EdtMod = True
End Sub
在此处输入代码
子初始化值()

ReDim TrmPnts(11)只需为…下一个
循环创建一个
,并使用循环变量计算正确的字段,如下所示(我希望我正确解释了逻辑,请检查):

Sub-initialevalues()

ReDim trmpnts(11)“任何人都可以使用For循环来完成此操作。#Jochen我检查了此项,但它在“.Cpt=”T“&I”代码行中给出了一个“Object Required”错误。您没有编写关于该对象的任何内容以及在何处定义它。我只是按照他们的方式离开了那一行,而不是用计数器变量调整整数值。。。如果在运行代码中将部件放在
Dim I
Next I
之间,它也会运行。如果
trmpnts
-数组中没有corrects对象,则无法工作。
Sub InitiateValues()
ReDim trmpnts(11) '<<<<CHANGE HERE Total Point + SE -JJ
Set ShDat = Worksheets("Data")
Set ShDatPth = Worksheets("DataPath")
Set tvol = Worksheets("Terminal Volumes")
'ShDatPth.Range("B2:FB157").Value = 0
Dim I As Long
For I = 1 To UBound(trmpnts)
    With trmpnts(I)
        .Cpt = "T" & I
        .CptColr = "&H000088"
        .Row = ShDat.Cells(I * 2, 1)
        .Col = ShDat.Cells(I * 2 + 1, 1)
        .LFamt = tvol.Cells(I, 2)
        .CTamt = tvol.Cells(I, 3)
    End With
Next I
....
End Sub