2014-11-26 2 views
1

Если пользователь вводит новый комментарий, он добавляется, но перед комментарием должен быть каким-то образом мы можем передать пользователю, что вы его модифицировали. Я предлагаю следующее:Добавить «Версия» комментариев в ячейку

не утвержден. (Это начальное содержимое ячейки) Версия 1: одобрено. (Этот комментарий выше соответствует содержимому ячейки после первого редактирования)
Версия 2: при определенных условиях. (Это + два комментария выше - содержимое ячейки после второго редактирования).

Пожалуйста, помогите мне с этой логикой, поскольку я нахожусь в сжатом сроке! . :(Я очень уверен, что я ниже очень плохо

If ActiveCell.Value = "" Then 
    ActiveCell.Value = NRemark 
Else 
    For i = 1 To 5 
     ActiveCell.Value = "Version" & i & ":" & ActiveCell.Value & vbNewLine & "Version" & i + 1 & ":" & NRemark 
    Next i 
End If 
+0

Что касается комментариев, считаете ли вы, что все предыдущие версии были добавлены в [комментарий ячейки] (http://www.contextures.com/xlcomments01.html)? Это будет работать как дешевая версия команды 'Track Changes'. – Jeeped

+0

Да, но это для мастер-листа, который объединит все остальные необходимые листы. и отчасти дают отзыв о некоторых комментариях. Я не уверен, что я имею в виду, но вкратце этот лист предназначен только для ввода и отслеживания количества обращений от – dagan

+0

. Попробуйте создать «Истории пользователей» для этой концепции. Опишите, что должно происходить за один шаг за раз и записать его. Затем просмотрите шаги, и ошибка должна быть ясной. Я не совсем уверен, что вы пытаетесь произойти. Я ДУМАЮ, что вы ошибаетесь в вопросе итерации i от 1 до 5. Я думаю, вам просто нужно добавить ячейку с НОВЫМ комментарием. Для этого вам нужно будет выяснить, какая версия комментариев LAST. Опять же, не уверен, что вы делаете. – peege

ответ

3

Попробуй это: (Создаю первоначальное замечание как вариант 1. Добавляет новое замечание в конце с версией = к предыдущей версии плюс 1. найти предыдущая версия путем поиска всех символов в строке в обратном направлении до тех пор, пока не найдет номер. эТО ТОЛЬКО РАБОТАЕТ ЕСЛИ вАШИ КОММЕНТАРИИ нЕ СОДЕРЖИТ чИСЛА! ИНАЧЕ ВЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ МОЙ ДРУГОЙ КОД НИЖЕ!)

If ActiveCell.Value = "" Then 
    ActiveCell.Value = "Version 1: " & NRemark 
Else 
    If ActiveCell.Find("Version", LookIn:=xlValues, LookAt:=xlPart) is Nothing Then 
     ActiveCell.Value = "Version 1: " & ActiveCell.Value 
    Else 
    End If 
    For i = Len(ActiveCell.Value) to 1 Step -1 
     currentChar = Mid(ActiveCell.Value, i, 1) 
     If isnumeric(currentChar) = True Then Exit For 
     Else 
     End If 
    Next i 
    ActiveCell.Value = ActiveCell.Value & vbNewLine & "Version" & CInt(currentChar) + 1 & ": ", & NRemark 
    ActiveCell.WrapText = True 
End If 

Если ваши комментарии включают числовые символы, затем: (поместит новую версию в начале, чтобы поиск текущего номера версии работал, если у вас есть числовые символы позже в комментарии s)

If ActiveCell.Value = "" Then 
    ActiveCell.Value = "Version 1: " & NRemark 
Else 
    If ActiveCell.Find("Version", LookIn:=xlValues, LookAt:=xlPart) is Nothing Then 
     ActiveCell.Value = "Version 1: " & ActiveCell.Value 
    Else 
    End If 
    For i = 1 To Len(ActiveCell.Value) 
     currentChar = Mid(ActiveCell.Value, i, 1) 
     If IsNumeric(currentChar) = True Then Exit For 
     Else 
     End If 
    Next i 
    ActiveCell.Value = "Version" & CInt(currentChar) + 1 & ": " & NRemark & vbNewLine & ActiveCell.Value 
    ActiveCell.WrapText = True 
End If 
+0

hey Chrismas007. Где мы заканчиваем первый блок IF? Я получаю сообщение об ошибке. Я попытался закончить его до «If isnumeric (currentChar) = True Then Exit For», но я все равно получаю сообщение об ошибке – dagan

+0

Я добавил «Выход для» в следующей строке. но я получаю сообщение об ошибке в Next. btw Я говорю о второй версии вашего кода – dagan

+0

Хорошо, что я обновил свой код (в обоих примерах). Должен работать сейчас. – Chrismas007

Смежные вопросы