Страницы: 1
RSS
Копировании ячеек большой пробел TAB, Копировании ячеек большой пробел TAB
 
Добрый день.
При выделении и копировании двух клеток  с помощью ctrl+c происходит добавление пробела TAB а мне нужен маленький пробел чтобы был при копировании двух ячеек, внутри каждой ячейки содержатся формулы.
Подскажите какие варианты можно сделать чтобы он копировал нормальным пробелом, с макросами/ без макроса заранее благодарю?
 
Попробуйте так:
Этот код вставить в модуль листа.
Затем выделить ячейки и запустить его.
Если значения в А1 и  В1, результат вставится в С1, а также скопируется в буфер обмена и можно вставить например в блокнот без пробела ТАВ
Код
Sub CopyWithoutTabs()
    Dim cell As Range
    Dim copiedData As String
    Dim firstCell As Boolean
    firstCell = True
    copiedData = ""
    For Each cell In Selection
            cellValue = Replace(cell.Value, vbTab, " ")
        If firstCell Then
            copiedData = cellValue
            firstCell = False
        Else
            copiedData = copiedData & " " & cellValue
        End If
    Next cell
        If Len(copiedData) > 0 Then
        Selection.Cells(1, 1).Offset(0, 2).Value = copiedData
    End If
        If Len(copiedData) > 0 Then
        Dim tempCell As Range
        Set tempCell = ThisWorkbook.Sheets(1).Range("Z1")
        tempCell.Value = copiedData
        tempCell.Copy
    End If
End Sub

Изменено: DAB - 13.03.2025 01:41:53
 
Я когда вставил макрос он вставляет его в другую ячейку, а можно сделать так чтобы при копировании работала как нужно?)
Изменено: pathrone - 15.03.2025 13:12:19
 
Цитата
чтобы при копировании работала как нужно?)
Вы не написали как Вам нужно.
Если значения в А1 и в В1, где должен быть результат?
Изменено: DAB - 15.03.2025 16:44:03
 
Прошу прощения видимо не расписал точнее.
Вообщем во вложении будет пример таблицы и написал где нужен результат копирования  (Ячейка S32)

и чтобы условно при копировании 1 строки был вместо TAB обычный пробел
а между самими строки был  CTRL+ENTER

Заранее благодарю
 
Вы можете в S32 написать результат, как должно быть? А то что-то туплю
 
Результат в S32 должно быть копирование моих ячеек либо с A1 до конца таблица либо часть из таблицы . Главное чтобы в S32 должно быть копирование с маленьким пробелом выделенной мною таблицы,это возможно сделать?  
 
Так?
Код
Sub CopyWithoutTabs()
    Dim cell As Range
    Dim copiedData As String
    Dim firstCell As Boolean
    firstCell = True
    copiedData = ""

    For Each cell In ThisWorkbook.Sheets(1).Range("A2:D2")
        cellValue = Replace(cell.Value, vbTab, " ")
        If firstCell Then
            copiedData = cellValue
            firstCell = False
        Else
            copiedData = copiedData & " " & cellValue
        End If
    Next cell

    ' Вставляем результат в ячейку 32 (можно указать любую нужную ячейку)
    If Len(copiedData) > 0 Then
        ThisWorkbook.Sheets(1).Cells(32, 19).Value = copiedData ' Строка 32 столбец 19
    End If

End Sub

 
Спасибо большое да действительно  именно так и нужно было.  
 
Доброй ночи, скорее надоел уже запросами скорее всего, но у меня появилась проблема, предположим в ячейке A,2 (строка), B2 и D2 числовые значения 2828,282828 и 2192,92828, C2 также строка. Мне необходимо чтобы при вставке в S32 выводилось округленные до сотых значения. В данном случае 2828,28 и 2192,92 вот так.
Условно S32 должен при копировании выводить:
Строка 2828,28 Строка 2192,92. Но при попытках у меня выводит:
Строка 2828,282828 Строка 2192,92828. Сколько бы я не пытался округлять даже сами значения в ячейках B2 и D2
 
Попробуйте так:

Код
Sub CopyWithoutTabs()
    Dim cell As Range
    Dim copiedData As String
    Dim firstCell As Boolean
    firstCell = True
    copiedData = ""

    For Each cell In ThisWorkbook.Sheets(1).Range("A2:D2")
        Dim cellValue As String
        
           If IsNumeric(cell.Value) Then
             cellValue = Format(Round(cell.Value, 2), "0.00")
        Else
             cellValue = cell.Value
        End If

        cellValue = Replace(cellValue, vbTab, " ")
      
        If firstCell Then
            copiedData = cellValue
            firstCell = False
        Else
            copiedData = copiedData & " " & cellValue
        End If
    Next cell
    
    If Len(copiedData) > 0 Then
        ThisWorkbook.Sheets(1).Cells(32, 19).Value = copiedData
    End If
End Sub

Страницы: 1
Читают тему
Наверх