2016-10-14 58 views
0

我正在尝试使用VBA运行公式。我最终的目标是让它运行多个公式,并且只需单击一次即可选择一批单元格。对于我正在用这些公式处理的一些情况。我正在使用公式自动生成基于预填充字段的工作范围。举例:VBA基于活动单元格运行(预制)公式

Circuit ID  scope    data1 data2 data3 data4 
123          a  b  c  d 
234          f  g  h  j 

我想突出显示电路ID并在公式范围内根据所选电路ID填写范围。这是我迄今为止...我使用宏录像机,它不想工作。

Sub Formulas() 
' 
' Formulas Macro 
' 

' 

    Range("E2").Select 
    ActiveCell.Formula = "="•  Customer name: ""&RC[29]&"""&chr(10)&"•  Customer Bus Org: ""&RC[30]&"""&chr(10)&"•  Internal Circuit ID: ""&RC[2]&"""&chr(10)&"•  Customer prem address: ""&RC[12]&"" ""&RC[13]&"" ""&RC[14]&"", ""&RC[15]&"", ""&RC[16]&"", ""&RC[17]&"""&chr(10)&"•  Customer demarc: ""&RC[18]&"" ""&RC[20]&"", ""&RC[19]&"" ""&RC[21]&"""&chr(10)&"•  MRR: ""&RC[68]&"""&chr(10)&"•  Current Off Net MRC: $""&RC[10]&"""&chr(10)&"• "& _ 
     " Percent: ""&RC[89]&"""&chr(10)&"•  Bandwidth: ""&RC[6]&"" (""&RC[7]&""Mb)"&chr(10)&"•  Customer term end date: ""&TEXT(RC[32],""mmm-dd-yyyy"")&"""&chr(10)&"•  New Vendor: ""&RC[106]&"""&chr(10)&"•  New MRC: $""&RC[102]&"""&chr(10)&"•  New NRC: $""&RC[103]&"""&chr(10)&"•  New Install Interval: ""&RC[105]&"""&chr(10)&"•  New Term: ""&RC[104]&"""&chr(10)&""&chr(10)&"Planner Notes:"&chr(10)&"This project is replacing the existing ""&RC[6]&"" ("& _ 
     """Mb) based solution from (""&RC[5]&"") with a new ""&RC[99]&"" (""&RC[100]&""Mb) based solution from (""&RC[106]&""). "&chr(10)&""&chr(10)&"RFA # ""&RC[107]&"" install notes:"&chr(10)&"Please install (""&RC[31]&"") Ethernet ""&RC[99]&"" (""&RC[100]&""Mb ) circuit with (""&RC[106]&"") from (""&RC[101]&"") to ([Customer Prem] ""&RC[12]&"" ""&RC[13]&"" ""&RC[14]&"", ""&RC[15]&"", "& _ 
     "&"", ""&RC[17]&""). This new circuit will be used to replace existing customer circuit ECCKT: ""&RC[1]&"", ""&RC[109]&"", ""&RC[110]&"", ICCKT: ""&RC[2]&"". The customer prem address is (""&RC[12]&"" ""&RC[13]&"" ""&RC[14]&"", ""&RC[15]&"", ""&RC[16]&"", ""&RC[17]&"") and customer demarc is (""&RC[18]&"" ""&RC[20]&"", ""&RC[19]&"" ""&RC[21]&"")."&chr(10)&""&chr(10)&""&chr(10)&"""""& _ 

End Sub 

这是我的实际公式,我注意到记录器改变了很多东西。
= “ - 客户名: ”& AH2 &“ - 客户总线组织: ”& AI2 &“ - 内部电路ID: ”& G2 &“ - 客户PREM地址: ”& Q2 &“” & R2 & “” & S2 & “ ”& T2 &“, ”& U2 &“, ”& V2 &“ - 客户分界点:” & W2 & “” & Y2 & “ ”& X2 &“ ”& Z2 &“ - MRR: ”& BU2 &“ - 电流断网MRC:$” & O2 & “ - 保证金百分比:” & CP2 & “ - 带宽:” & K2 & “(” & L2 & “MB) - 客户术语结束日期:” & TEXT(AK2, “MMM-DD-YYYY”)& “ - 新供应商:” & DG2 & “ - 新MRC:$” & DC2 & “ - 新NRC:$” & DD2 & “ - 新安装间隔:” & DF2 &“ - 新术语: “& DE2 &”

计划注:

该项目将取代现有的“& K2 & “(” & L2 & “MB)基于从 溶液(” & J2 & “)与新的”, “基于从 溶液 ”(“ MB(& DG2 &”)& CZ2 & & DA2 &)“ 。

RFA# “& DH2 &” 安装注意事项:

请安装( “& AJ2 &”)以太网 “& CZ2 &”(“& DA2 & ”MB)电路 用(“ (“& DB2 &”)到([Customer Prem]“& Q2)(”& DG2 &““” & R2 & “ ” & S2 &”, “& T2 &”, “& U2 &”, “& V2 &”)。这种新的电路将用于 取代现有的客户电路ECCKT: “& F2 &”, “& DJ2 &”, “& DK2 &”, ICCKT: “& G2 &”。客户PREM地址是( “& Q2 &”, “& R2 &”, “& S2 &”, “& T2 &”, “& U2 &”, “& V2 &”)和客户分界是(“& W2 & “”& Y2 &“, ”& X2 &“”& Z2 &“)。

回答

0

1)您需要使用FormulaR1C1,不只是Formula

2)不要使用Select,而不只是直接引用的单元格,如:

Range("E2").FormulaR1C1 = "=""Customer name: "" & RC[29]" 

如果宏记录仪把事情搞砸了,那么就自己一步一步地建立配方,下一步是:

Range("E2").FormulaR1C1 = "=""Customer name: "" & RC[29] & "" Customer Bus Org: "" & RC[30]" 

等等 等等

3)我会建议使用完全合格的引用:

Sub formulas() 

    Dim ws As Excel.Worksheet 

    Set ws = ThisWorkbook.Sheets("Test") ' change to name of your sheet 

    With ws 

     ' In production, you probably want to loop through the rows and insert the formula dynamically.  
     ' If so, insert loop here and reference the scope column cell dynamically instead of using range("E2") 
     .Range("E2").FormulaR1C1 = "=""Customer name: "" & RC[29] & "" Customer Bus Org: "" & RC[30]" 

    End With 

End Sub 
+0

首先非常感谢你一米七的时间。试图让这部分工作起来,让我的头部受到很大的乐趣。我进入并在VBA中开发了这个公式,我似乎在运行时遇到了问题。我觉得我只是想念一个我未经训练的眼睛缺失的小东西。 –

相关问题