Страницы: 1
RSS
vba как узнать адрес переменной в памяти
 
!
Живи и дай жить..
 
http://support.microsoft.com/kb/199824 Оно?
 
Слэн, я не знаю, но мне очень интересно - зачем? Нас ведь всегда интересует значение, а не место.
 
"Не место красит переменную, а переменная место!"  
:-)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Казанский}{date=25.10.2010 03:59}{thema=}{post}http://support.microsoft.com/kb/199824 Оно?{/post}{/quote}  
 
 
да, большое спасибо, сам не догадался.. :)  
 
 
 
а ответ на другие вопросы в этой статье  :)  
 
 
хочу copymemory использовать не отсюда столько-то, а отсюда до забора :)
Живи и дай жить..
 
Т.е. поставить copymemory на службу людям? :)  
Ждём.
 
да работает... но..  
 
оказывается нафик не надо.  
 
тип вариант и так все предусматривает - там где-то видимо скрывается ссылка на данные, не укладывающиеся непосредственно в 16 байт..  
 
в общем copymemory получив длину массива(а для вариант это будет 16*n) все правильно переписывает.  
 
а varptr выдает длину массива кратную 16 байт независимо от того, что там записано.  
 
zvi, наверное, и так все это знал :)
Живи и дай жить..
 
слэн, очень интересно.  
А в простом примере кода можете показать механизм?
 
смотрите :)
Живи и дай жить..
 
Вот спасибо!  
Как же мы этого до сих пор не знали?  
Теперь научиться бы выборочно только например вторую колонку массива выбирать.  
А то целиком можно просто тупо r2 = r скопировать...
 
так я же выкладывал в другой ветке..  
 
массивы хранятся    в памяти по столбцам - т.е. сначала первый столбец,сразу за ним второй... и т.д.  
 
copymemory(arr2(1),arr1(1),n*16) - скопирует n элементов arr1 в arr2 типа вариант  
 
copymemory(arr2(1,1),arr1(1,2),n*16) - скопирует в arr2 n элементов второго столбца arr1. тоже вариант  
 
если массивы определенной размерности - целые или вещественные, то вместо 16 пишем 1,2,4,8 или 14
Живи и дай жить..
 
но можно для универсальности(только это плохо) написать свою функцию:  
 
function copymem_among(arr2,arr1(i),arr1(j))  
copymem_among=copymemory(arr2,arr1(i),varptr(arr1(j))-varptr(arr1(i)))  
end function
Живи и дай жить..
Страницы: 1
Наверх