|
|
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
У меня скоро нервный тик будет от этого vba excel Почему это работает Sheets("sheet1").Rows(N).Copy Sheets("sheet2").Rows(N) это тоже работает Sheets("sheet1").Cells(1, 1).Copy Sheets("sheet2").Cells(1, 1) и даже это работает Sheets("sheet1").Range("A1", "D4").Copy Sheets("sheet2").Range("A1", "D4") а это не работает? Sheets("sheet1").Range(Cells(N, M), Cells(N1, M1)).Copy Sheets("sheet2").Range(Cells(N, M), Cells(N1, M1)) и как правильно задать (и копировать) массив ячеек (N, M) (N1, M1)? Заранее спасибо за ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 20:54 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Нашел вот это, но без Activate не хочет. А очень надо без Activate Sheets("sheet1").Activate Set Range1 = Sheets("sheet1").Range(Cells(N, M), Cells(N1, M1)) Range1.Copy Sheets("sheet2").Range(Range1.Cells(1, 1).Address) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 21:23 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
GarnizoneНашел вот это, но без Activate не хочет. А очень надо без Activate Sheets("sheet1").Activate Set Range1 = Sheets("sheet1").Range(Cells(N, M), Cells(N1, M1)) Range1.Copy Sheets("sheet2").Range(Range1.Cells(1, 1).Address)выделенное красным - аналогично Application.Cells(N, M) - т.е. диапазон на активном листе. Ф1Using this property without an object qualifier returns a Range object that represents all the cells on the active worksheet.чтобы обратиться к Cells другого листа - надо конкретно указывать чей это Cells: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 21:53 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
2 ТС , сорри за оффтоп :) Ха, я и не знал что можно так копировать и вставлять в одну строчку :) 2 qwrqwr Вы видели, как ребята из майкрософт объясняют как писать макросы? Вот так (выделено желтым): ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 22:43 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
m Ха, я и не знал что можно так копировать и вставлять в одну строчку :) конечно можно, с указанием destination, не засоряя/затирая буфер. кстати, я там именно, что хотел написать в одну строчку - и забыл соединить строки - после Copy, конечно же, надо пробел+нижнее подчеркивание - но надеюсь, ТС сам догадался. m 2 qwrqwr Вот так (выделено желтым):сильно, поржал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 23:30 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
qwrqwr_[quot m] кстати, я там именно, что хотел написать в одну строчку - и забыл соединить строки - после Copy, конечно же, надо пробел+нижнее подчеркивание - но надеюсь, ТС сам догадался. Догадался :) Благодарю за ответ, очень помог. Мне моя логика почему-то упорно твердила, что все что в скобках у Range должно быть априори в одном листе, видимо я отстал от жизни. Хороший у вас Ф1, а я все по интернетам, по гуглам, надо бы обновиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 23:58 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
qwrqwr_[quot m] не засоряя/затирая буфер. справедливости ради - буфер всё-же засоряется. Проверьте - после этой операции вполне можно куда-нибудь запастить копировавшееся. И менеджеры буфера тоже содержимое сохраняют. Т.е. на скорость операции (типа в буфер данные не гоним) этот вариант не сильно влияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 09:10 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
qwrqwr...конечно можно, с указанием destination... Да, даже в справке написано :)... Вот, видимо, обратная сторона изучения ВБА через макрорекодер на ранних этапах... Когда смотришь не в справку, а на то, что записал чудо-рекодер :)... Вообщем, наверное нужно советовать всем начинающим учиться не через макрорекодер, а через справку (причем в МС она достаточно полная и доходчивая). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 10:55 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Hugo121 справедливости ради - буфер всё-же засоряется. Проверьте - после этой операции вполне можно куда-нибудь запастить копировавшееся. Мда.. Спасибо, что развеяли иллюзию :) Правда, мне не удалось "куда-нибудь запастить копировавшееся" . Но то, что буфер, как минимум очищается - это факт. Еще позабавлялся следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но раскомментировав строку с Range.Copy происходит интересная весЧь: ДВАЖДЫ выдается мессиджбокс с содержимым текста буфера - т.е. после Range.Copy он еще там. Однако если сразу же запустить макрос снова - то буфер уже пустой . Что там происходит - хз. Недаром доступ через VBA к буферу косой-кривой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:19 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Ругается на MSForms.DataObject :( Что надо подключить в References, не подскажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:24 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Hugo121, Microsoft Forms 2.0 Object Library ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:25 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Искал, искал, не нашёл... Не подкинете файлик и где он лежал? Похоже нужная штука - когда мне надо было из буфера данные кодом извлечь, пришлось монстрообразный код из сети привлечь (работает). Там правда ещё и ClipPut нужно - тут есть такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:32 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Я в экселе ищу, может совсем не там? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:33 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Hugo121Я в экселе ищу, может совсем не там?Попробуйте просто добавить новую User Form - ссылка должна появиться автоматически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:38 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Hugo121Там правда ещё и ClipPut нужно - тут есть такое?Насколько мне известно, MSForms.DataObject - единственная кривенькая дорожка из VBA в Clipboard и обратно. Причем, вроде бы только текст позволяет обменивать. API дает более полный контроль над буфером (как и над всем прочим) - но и кода больше :) вот пример из Help-a: The following example demonstrates data movement from a TextBox to a DataObject, from a DataObject to the Clipboard, and from the Clipboard to another TextBox. The PutInClipboard method transfers the data from a DataObject to the Clipboard. The SetText and Paste methods are also used. To use this example, copy this sample code to the Declarations portion of a form. Make sure that the form contains: Two TextBox controls named TextBox1 and TextBox2. A CommandButton named CommandButton1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:45 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Спасибо, сработало :) Вот только останется ли эта возможность в файле без формы? Проверил - не осталась :( Зараза.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:46 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Hugo121 Вот только останется ли эта возможность в файле без формы? Проверил - не осталась :( Зараза....странно... у меня работает без формы. Можно еще делать позднее связывание на объект MSForms.DataObject через его GUID Вот тут booby давал пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 11:51 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Проверил иначе - у меня остаётся, если форму добавить, а потом удалить. И оно есть, если открыт такой файл. Если пытаться подключить на чистом файле, который создан с нуля на открытом с нуля Экселе - Nothing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 12:00 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Hugo121Проверил иначе - у меня остаётся, если форму добавить, а потом удалить. И оно есть, если открыт такой файл. Если пытаться подключить на чистом файле, который создан с нуля на открытом с нуля Экселе - NothingНу ясно - просто у меня всякие надстройки грузятся с Экселем - там уже есть юзерформы. Поэтому и пункт в ссылках сразу есть. Пишите жалобы на billgates@micrisoft.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 12:09 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
qwrqwr Насколько мне известно, MSForms.DataObject - единственная кривенькая дорожка из VBA в Clipboard и обратно. Причем, вроде бы только текст позволяет обменивать. API дает более полный контроль над буфером (как и над всем прочим) - но и кода больше :) Для полноты информации - вот это я нарыл в сети: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. А вот так применил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 12:11 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Похоже, что всё это можно было сделать проще с MSForms.DataObject, мне всего лишь надо было извлечь из буфера значение (crdn = ClipBoard_GetData, аналог dobj.GetFromClipboard), но тогда такой инфы не нарыл... переделывать не буду, но в следующий раз попробую обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 12:20 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Погонял немного эти MSForms.DataObject - работает отвратительно. Если взять в буфер на стороне, или его же кодом - ОК. Но если брать Ctrl+C из таблицы, и затем кодом пытаться из буфера достать - дулю. Такое впечатление, что это разные буферА... Мне такое не подходит, я остаюсь на том монстре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 15:35 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
Hugo121Но если брать Ctrl+C из таблицы, и затем кодом пытаться из буфера достать - дулю. Такое впечатление, что это разные буферА... А в чем дуля проявляется ? В куче непонятных символов ? Вот так я переношу данные из Ctrl+C в массив: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. Хотя есть одно но, если не ошибаюсь [давно делал], все ячейки в скопированом массиве должны быть заполнены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 15:46 |
|
||
|
Копирование на другой лист
|
|||
|---|---|---|---|
|
#18+
m А в чем дуля проявляется ? В куче непонятных символов ? Да нет, просто пусто :) Ваш код поизучаю на досуге, может куда и сгодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36293382&tid=2178880]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
151ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 406ms |

| 0 / 0 |
