Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2009, 03:35   #1
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию Копировать содержимое ячейки.

Уважаемые программисты, напишите пожалуйста код, который копирует в буфер только содержимое ячейки, чтобы содержимое осталось в буфере после очищения ячейки.
agregator вне форума Ответить с цитированием
Старый 18.11.2009, 04:32   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Зачем Вам буфер? Присвойте значение ячейки переменной.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 18.11.2009, 05:38   #3
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

SAS888, я хочу сделать, чтобы при правом клике-скопировать содержимое и очистить ячейку, при двойном щелчке вставить в другую ячейку. Или вырезать и вставить в другую ячейку только значение. (Перетащить неменяя формат конечой ячейки.)
agregator вне форума Ответить с цитированием
Старый 18.11.2009, 05:56   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А чем Вас не устраивает существующая в Excel возможность "Вырезать" - "Специальная вставка" - "Значения" ?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 18.11.2009, 07:27   #5
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

После "вырезать" "специальная вставка" не работает.
agregator вне форума Ответить с цитированием
Старый 18.11.2009, 07:31   #6
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

И хотелось, чтобы формат первой ячейки не изменялся.
agregator вне форума Ответить с цитированием
Старый 18.11.2009, 08:13   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Выделите ячейки (ячейку), нажмите правую кнопку мыши и выберите в контекстном меню новый пункт "Скопировать и очистить". Затем, выберите требуемую ячейку для вставки и через правую кнопку "Вставить значения".
Эти два новых пункта в контекстном меню ячейки будут создаваться при открытии этой книги и удаляться при ее деактивации. Устроит?
Вложения
Тип файла: rar CopyPaste.rar (9.2 Кб, 47 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 18.11.2009 в 08:32.
SAS888 вне форума Ответить с цитированием
Старый 19.11.2009, 07:55   #8
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

SAS888, классную штуку ты сделал! Но мне удобнее если бы он работал как этот код:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CutCopyMode = 0 Then GoTo a
If Application.CutCopyMode = 0 Or Selection.Cells.Count > 1 Then Exit Sub
If Selection = 0 Then ActiveSheet.Paste Else Exit Sub
Application.CutCopyMode = False
Exit Sub
a: If Selection.Cells.Count > 1 Then Exit Sub
Selection.Cut
End Sub

Я попробовал слепить такой код, но он не работает:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Range("A1") = 0 Then GoTo a
If Selection.Cells.Count > 1 Then Exit Sub
If Selection = 0 Then Selection.Value = xx Else Exit Sub
Range("A1").ClearContents
Exit Sub
a: If Selection.Cells.Count > 1 Then Exit Sub
xx = Selection.Value: Selection.ClearContents: fl = True
Range("A1").FormulaR1C1 = "Вставляй"
End Sub
Можно сделать, чтобы этот код работал?
agregator вне форума Ответить с цитированием
Старый 19.11.2009, 08:16   #9
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Вот так работает.
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Range("A1") = 0 Then GoTo a
If Selection.Cells.Count > 1 Then Exit Sub
If Selection = 0 Then Application.Run "InsertValue" Else Exit Sub
Range("A1").ClearContents
Exit Sub
a: If Selection.Cells.Count > 1 Then Exit Sub
Application.Run "CopyAndClearRange"
Range("A1").FormulaR1C1 = "Вставляй"
End Sub

Подскажите как можно выключать этот код, кроме как поставить знак коментария " ' " перед Private Sub.

Последний раз редактировалось agregator; 19.11.2009 в 08:34.
agregator вне форума Ответить с цитированием
Старый 19.11.2009, 09:16   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. Чуть рациональнее будет так:
Код:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Cells.Count > 1 Then Exit Sub
    If [A1] = 0 Then
        Application.Run "CopyAndClearRange": [A1] = "Вставляй"
    Else
        If Target = 0 Then Application.Run "InsertValue" Else Exit Sub
        [A1].ClearContents
    End If
End Sub
2. Для того, чтобы "выключить" код, можно использовать
Код:
Application.EnableEvents = False
Для того, чтобы "включить":
Код:
Application.EnableEvents = True
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как можно копировать значение последней ячейки zander Microsoft Office Excel 1 18.08.2009 18:04
Как правильно изменить содержимое ячейки по клику в нее? Stilet JavaScript, Ajax 3 12.08.2009 17:03
Как подогнать содержимое ячейки по высоте ПУГВ HTML и CSS 4 28.03.2009 18:19
Как копировать URL адрес из ячейки в другую ячейку (макросом). AlexDoom Помощь студентам 1 09.03.2009 10:59