我希望創建一個宏來請求用戶的「前綴」和「後綴」以及一個範圍。前綴將放置在每個公式的前面,而後綴將放置在整個範圍內每個公式的末尾。例如,如果A1包含ABC
且前綴爲=LEFT(
,後綴爲,1)
,則A1中的公式應從ABC
更改爲=LEFT(ABC,1)
,因此僅顯示A
。如何創建一個可以在範圍內的公式中添加前綴和後綴的宏?
爲此提供用戶界面的最佳方式是通過表單。讓我們把它叫做 「宏包裝」:
這是它應該是什麼樣子的行動:
這裏是cmdApply
和cmdCancel
按鈕我的VBA代碼:
Private Sub cmdApply_Click()
Dim DataValue As Range
For Each DataValue In Range(redtSelectRange)
If Left(DataValue.Formula, 1) = "=" Then
DataValue.Formula = "=" & _
Trim(txtBefore.Text) & _
Right(DataValue.Formula, Len(DataValue.Formula) - 1) & _
Trim(txtAfter.Text)
Else
DataValue.Formula = "=" & _
Trim(txtBefore.Text) & _
DataValue.Formula & _
Trim(txtAfter.Text)
End If
Next DataValue
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
但是,當我編譯上述我收到「運行時錯誤」 1004':應用程序定義或對象定義的錯誤「。
我試圖縮短cmdApply
條件到I
mmediate If
語句:
Private Sub cmdApply_Click()
Dim DataValue As Range
For Each DataValue In Range(redtSelectRange)
DataValue.Formula = "=" & _
Trim(txtBefore.Text) & _
IIf(Left(DataValue.Formula, 1) = "=", Right(DataValue.Formula, Len(DataValue.Formula) - 1), DataValue.Formula) & _
Trim(txtAfter.Text)
End If
Next DataValue
End Sub
乃至中間體窗口顯示範圍內的第一個條目的正確的(預期的)輸出:
?Trim(txtBefore.Text) & IIf(Left(DataValue.Formula, 1) = "=", Right(DataValue.Formula, Len(DataValue.Formula) - 1), DataValue.Formula) & trim(txtAfter.Text)
=round(1.2,0)
我應該更改我的代碼以正確添加/ i爲每個範圍的公式添加前綴/後綴?
調試器停止了哪一行? – FreeMan
@FreeMan:它停止在'For Each'中的'DataValue.Formula ='賦值(我提供的那些)。 – Werner