2016-10-14 59 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中開發了這個公式,我似乎在運行時遇到了問題。我覺得我只是想念一個我未經訓練的眼睛缺失的小東西。 –

相關問題