2015-01-08 3 views
1

Уже некоторое время изучаю vba и сумел найти и/или разработать решения для большинства икота, в которые я попадал.Excel vba сохранение предварительно скопированных данных в переменную

Однако один проект, над которым я сейчас работаю, поднял вопрос. По существу, кусок данных копируется с одного листа (до того, как лист с макросом даже открыт), лист, над которым я работаю, открывается и выполняется макрос, в настоящее время макрос делает вставку скопированных данных, а затем повторно организуйте, если в желаемой форме. Это прекрасно, кроме того, что лист очень занят, и вставка всего пакета данных имеет возможность перезаписать существующие данные на листе.

По сути, мне интересно, есть ли способ сохранить данные, которые были скопированы в переменную массива? Я просто не знаю синтаксиса. Чтобы вставить его, я просто использую простое выделение. Специальная строка, но когда вы устанавливаете переменную, вы не можете ее использовать?

Dim pasteAr() as Variable 
    pasreAr = .....??? 'currently copied data in other workbook 

После того, как я работал, что из него должен быть простым, чтобы просто вставить нужную информацию в лист с помощью ссылки этого массива в порядке?

Спасибо за помощь (заранее: P)

ответ

0

Copy/Paste, как правило, не является эффективным способом, чтобы сделать что-то, вы можете использовать вариантный массив для хранения информации. Если вы собираетесь хранить его для использования между макросами, вы захотите объявить его как Public/Private.

Public MyArray() As Variant 

Sub StoreArray() 
    'Store the data you want to keep: 
    MyArray = Sheets("Sheet1").Range("A1:B5").Value 
End Sub 

массив не будет работать так же, как паста, однако таким образом:

Sheets("Sheet2").Range("A1").Value = MyArray 

заполнит только в A1 со значением в A1, см this page для получения более подробной информации.

+0

Я знаю, как использовать массивы и как назначать им значения (Range («A1»). Значение = myArrray (1,5) и т. Д.) Что мне нужно знать, есть ли способ присвоить все переменные в буфер обмена переменной массива? – matt

+0

Это будет сложнее, вам нужно сначала сохранить данные в массиве, записать все данные из этого массива в буфер обмена как отдельные строки с идентификаторами, а затем вывести данные из буфера обмена с помощью идентификаторов. У Chip Pearson есть специальный модуль для этого [здесь] (http://www.cpearson.com/excel/Clipboard.aspx) –

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