나는이 A1 = 5 내가 추가 한 A1을 이름 “으로 주인공 “.
내가 5=Protagonist
를 생각해 내면 .
D12에서 내가하고 싶다고 말하면 6=Protagonist+1
이 나올 것입니다 .
- 내가 달성하고자하는 것은 “대체입니다 주인공 에” 5
과가 D12의 공식은 남아있다=5+1
.
A1이 지속적으로 값을 변경하기 때문에이 작업을 수행 해야하며 값을 사용하는 수식을 만들 때 보유한 값만 유지하면됩니다.
(수동 내가 선택할 수 있습니다 알고 주인공 과 충돌 F9를 내가 그것을해야 할 공식의 그 부분을 해결하기 위해,하지만 금액에 중요한 시간 소비를 먹으 렴)
이것은 공식을 입력하고 해결 한 후에 발생할 수 있습니다. 타이핑하는 동안 수식 입력 줄에 발생할 수 있다면 정말 놀랍지 만 vba가 그렇게 확장되지는 않을 것입니다.
답변
계산 된 값으로 바꿔야 할 경우 :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Left(Target.Formula, 1) = "=" And IsNumeric(Intersect(Range("B1:F1000"), Target)) Then
Dim a As Variant
For Each a In Array("protagonist", "anotherNameToChange")
While InStr(1, Target.Formula, a, 1)
Target.Formula = Replace(Target.Formula, a, Evaluate(ThisWorkbook.Names(a).Value), , , 1)
Wend
Next
End If
End If
End Sub
원하는대로 배열의 모든 이름에 대해 자동으로 수행합니까?
모든 이름에 대해 필요한 경우 followimg 2 행을 변경하십시오.
For Each a In Array("protagonist", "anotherNameToChange")
로 변경 :
For Each a In ThisWorkbook.Names
과
Target.Formula = Replace(Target.Formula, a, Evaluate(ThisWorkbook.Names(a).Value), , , 1)
에
Target.Formula = Replace(Target.Formula, a, Evaluate(a.Value), , , 1)
이것은 대소 문자를 구분하지 않습니다 🙂
답변
이것을 시도하십시오 :
Sub qwerty()
Dim N As Name, FixString As String
Set N = ActiveWorkbook.Names("Protagonist")
FixString = N.RefersToRange
For Each cell In Cells.SpecialCells(xlCellTypeFormulas)
cell.Formula = Replace(cell.Formula, "Protagonist", FixString)
Next cell
End Sub
편집 # 1 :
Event Macroqwerty
에서 호출하려면 다음과 같이 사용하십시오.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:C100")) Is nothen Then
Else
Application.EnableEvents = False
Call qwerty
Application.EnableEvents = True
End If
End Sub
답변
귀하의 질문을 이해 한 결과 불가능합니다.
나는 그것이 존재한다면,이 행동을 원하는 당신의 뒤에있는 추론 (비즈니스 로직)을 이해하고 통합 문서를 재 형식화하는 것이 대답이라고 생각합니다.