Страницы: 1
RSS
Как выполнить различное выравнивание текста в зависимости от содержимого в ячейке?, Выровнить текст при использовании формулы или по содержимому
 
По просьбе модератора изменяю имя темы, и задаю тот же вопрос) Применил формулу ЕСЛИ есть два варианта, при выдачи одного нужно выровнить текст по левому краю, в случае же выдачи второго варианта нужно расположить текст по центру ячейки. Подскажите пожалуйста команду или макрос для выполнения поставленной задачи. Спасибо. прикрепляю файл документа.  Увязаны лист "Данные" ячейка Е45 и Лист "бетон 1 ступени" ячейка С107
 
На листе "Данные", что нужно сделать?
 
на листе данные в ячейке Е45 вводятся данные на втором листе в ячейке С107 выводится результат который надо расположить в случае "---" в центре в иных случаях прижать влево
 
Сейчас обратил внимание на название темы. Вроде нельзя использовать в теме слова типа "нужно". Кроме того, есть опечатка "Нужно выронить".
Поэтому пока не берусь, пусть сначала модераторы дадут добро.
 
В модуль Листа 'Данные'. Формулу из ячейки C107, листа 'бетон 1 ступени' можно удалить
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [E45]) Is Nothing And Target.Count = 1 Then
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    With Target
        If .Value = Empty Then
            With Worksheets("бетон 1 ступени")
                .Range("C107").Value = "'---"
                .HorizontalAlignment = xlCenter
            End With
        Else
            .HorizontalAlignment = xlLeft
            With Worksheets("бетон 1 ступени").Range("C107")
                .Value = Target.Value
                .HorizontalAlignment = xlLeft
            End With
        End If
    End With
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Если, при пустой ячейке  Е45 на листе "Данные" установить в ячейке C107 на листе "бетон 1 ступени" выравнивание по центру, то Ваши "---" не будут выравнены с этими символами в строках ниже, т. к. ширина ячеек разная.
Предлагаю оставить выравнивание по левому краю, а в ячейке C107 листа "бетон 1 ступени" применить формулу:
Код
=ЕСЛИ(Данные!E45<>0;Данные!E45;СЦЕПИТЬ(ПОВТОР(" ";52);"---"))
Чем шире угол зрения, тем он тупее.
 
не все так просто но и не все так сложно!) Спасибо!!!
 
Еще вариант. В модуль Листа 'бетон 1 ступени'
Код
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
    Select Case Worksheets("Данные").Range("E45").Value
        Case Empty
            With Me.Range("C107")
                .Value = "'---"
                .HorizontalAlignment = xlCenter
            End With
        Case Else
            With Me.Range("C107")
                .Value = Worksheets("Данные").Range("E45").Value
                .HorizontalAlignment = xlLeft
            End With
    End Select
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Karataev написал:
Вроде нельзя использовать в теме слова типа "нужно".
Это слово не является ругательным )
 
Sanja, а как перечислить несколько пар ячеек? подскажите пожалуста
 
Цитата
salih32 написал: несколько пар ячеек?
Для кого кода нужна переделка?
Согласие есть продукт при полном непротивлении сторон
 
Sanja,  для последнего
 
Код
Private Sub Worksheet_Activate()
Dim myRange As Range, iRng As Range, I&
Application.ScreenUpdating = False
Set myRange = Worksheets("Данные").Range("E45:E49")     'для связанного диапазона ячеек
Set iRng = Me.Range("C107:C111")
'Set myRange = Worksheets("Данные").Range("E45,E47,E49") 'для НЕсвязанного диапазона ячеек
'Set iRng = Me.Range("C107,A109,A111")
For I = 1 To myRange.Count
    Select Case myRange(I).Value
        Case Empty
            With iRng(I).MergeArea
                .Value = "'---"
                .HorizontalAlignment = xlCenter
            End With
        Case Else
            With iRng(I).MergeArea
                .Value = myRange(I).Value
                .HorizontalAlignment = xlLeft
            End With
    End Select
Next
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Читают тему
Наверх