Построение ячейки, которая вводит значение, отображаемое значение, но значение ячейки - это что-то еще? - PullRequest
0 голосов
/ 04 мая 2018

Итак, название немного запутанное. Я буду использовать пример. Я хотел бы ввести значение 3 в ячейку A1. И я бы хотел, чтобы клетка немного подсчитала, например, раз 3 плюс 1. Далее вернуть значение в ячейку A1, НО когда я нажал на ячейку A1, я хочу, чтобы она отображала математическую формулу. Итак, вот что я получил:

Sub A()
    Dim term1 As Double
    Dim term2 As Double

    Range("A1").NumberFormat = "General"
    term1 = Range("A1").Value
    term2 = term1 * 3 + 1
    Range("A1").Value = term2
    term3 = term2
    term3 = """term1 * 3 + 1"""
    Range("A1").NumberFormatLocal = term3   
End Sub

Мне нужно сделать то, что я хочу, то есть принять значение, а затем вернуть его. Тем не менее, я не могу заставить .NumberFormatLocal принимать term2 значение в качестве строки. Так, что когда операция завершена, я вижу 4, отображаемые в ячейке, когда я нажимаю на ячейку, появляется формула A1 * 3 + 1. И тогда цель Range("A1").NumberFormat = "General" состоит в том, чтобы я мог сделать это снова, поместив в ячейку какой-то другой номер.

Кто-нибудь знает, как это сделать? Большое спасибо!

1 Ответ

0 голосов
/ 04 мая 2018

Я не уверен, правильно ли я понял, но я думаю, что вы хотите вставить нерабочую формулу в ячейку, которую вы выбрали, основываясь на значении этой ячейки. Если это так, то приведенная ниже формула подойдет вам:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myFormula As String

If IsNumeric(Selection.Value) = True And Selection.Value <> "" Then
    myFormula = Selection.Value & " * 3 + 1"
    Selection.Value = myFormula
End If

End Sub

Поскольку код находится в событии Worksheet_SelectionChange, он будет работать каждый раз, когда вы выбираете любую ячейку. Я добавил условие If...Then, чтобы не переформулировать уже сформулированную или пустую ячейку.

Поскольку формула работает для выбранной ячейки, вы должны выйти из этой ячейки и войти снова, чтобы заставить ее работать для вашей числовой ячейки.


Но, тем не менее, если вам строго не нужна формула, созданная в ячейке себя, но в другой ячейке; можно также использовать формульное решение.

Если ваш номер A1, напишите приведенную ниже формулу в B1 и скопируйте:

=ADDRESS(ROW(B1),COLUMN(B1)-1,1) & "* 3 + 1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...