【发布时间】:2019-06-30 00:15:31
【问题描述】:
我想通过 excel VBA 应用 Text(E2,"MM/DD/YYYY") 公式。我使用多张纸,单元格目标和单元格引用不固定。因此,我使用输入框方法来输入完美的单元格目标,并希望通过输入框方法手动选择或更改公式中的单元格引用。
例如。如果我在 A2 单元格中写上面的公式,我的目标单元格是 E2。单元格选择应通过输入框进行。
最初我的计划是用输入框选择这两个东西,但我只是一个初学者并没有设法做到这一点,因此改变了计划并重新编写了代码。但是在输入框中编辑公式范围时代码似乎存在一些问题,有时它不考虑我的输入。如果我说 Text(E2,"MM/DD/YYYY") 然后它选择 Text(D2 or something,"MM/DD/YYYY")
Option Explicit
Sub FinalTxtDte()
Dim Rng As range
Dim LastRow As Long
Dim Frmla As String
Dim DestRng As range
On Error Resume Next ' if the user presses "Cancel"
Set Rng = Application.InputBox("Select a Cell which needs to be converted in Date format.", "Range Selection", Type:=8)
Err.Clear
On Error GoTo 0
If Not Rng Is Nothing Then
Frmla = "=TEXT(" & Rng.Address("False", "False") & ",""MM/DD/YYYY"")"
On Error Resume Next ' if the user presses "Cancel"
Set DestRng = Application.InputBox("Select a Cell where you would like to get a Converted Date.", "Range Selection", Type:=8)
Err.Clear
On Error GoTo 0
If Not DestRng Is Nothing Then
DestRng.Formula = Frmla
LastRow = Rng.End(xlDown).Row
DestRng.Select
range(Selection, Selection.Offset(LastRow - Rng.Row, 0)).Select
Selection.FillDown
range(Selection, Selection.Offset(LastRow - Rng.Row, 0)).Value _
= range(Selection, Selection.Offset(LastRow - Rng.Row, 0)).Value
End If
End If
End Sub
【问题讨论】:
-
r[0]c[1]将选择偏移 1。使用r[0]c[0] -
注释掉 On Error 行,看看会发生什么。我认为您应该检查 Rng Is Nothing 而不是 =""。