2014-02-03 4 views
-2

благодарит всех вас, которые мне помогли! Я получил это с ВАШЕЙ помощью! ** :)excel и vba - массивы, переменные и диапазон - изменение на лету

Я - программист базовой школы и программист. Я пытаюсь помочь другу с помощью приложения excel vba. Это касается массива. У меня нет идеи, даже после нескольких часов исследований, о том, как это сделать.

все, что я вижу, это такие вещи, как: Range («A1: B10»)

Я прочитал некоторые вещи здесь, которые близки ... но не совсем то, что я пытаюсь сделать.

вопрос: a1 и b10 будут меняться все время. один раз это может быть s5 и z99, в следующий раз это может быть b1 и q55.

Я пробовал такие вещи, как:

a="a1:b10":range=(b) = FAIL 
a=chr(34)+chr(65)+"1:"+chr(66)+"10"+chr(34):range=(a) = FAIL 
range(chr(34)+chr(65)+"1:"+chr(66)+"10"+chr(34)) = FAIL 
r="a1":c="e5":range=(r,c) = FAIL 

как я могу назначить VARI для строк и столбцов так, что она становится:

r="a1":c="e5" 
. 
. 
call get_array 
. 
. 
public sub get_array 
array=range=(r,c) 

я отдаю себе отчет в том, что Варис придется быть глобальным, просто не уверен, что такое «тип».

Я в недоумении относительно того, как установить сабвуфер так, что строки и столбцы могут быть изменены «на лету»

Я буду всегда знать следующее (и они не будут «фиксированных»): начало строки конец строки начало столбца конец колонки

цель состоит в том, чтобы скопировать, что «выбор» в массив, чтобы иметь возможность добавлять/удалять строки по мере необходимости. ЛЮБАЯ помощь была бы оценена, и я знаю для yall, даже «so-so» люди в vba, вероятно, знают этот ответ.

Кроме того, как любопытный вопрос, что, если у ячейки были данные И формула «на ней», как это можно скопировать/обработать? скопировать данные, забыть формулу? скопировать формулу, забыть данные? скопировать оба? синий экран смерти? ;)

простите меня за то, что вы манекен! спасибо! :)

+0

если вы имеете 'г = "a1": с = "е5"', попробуйте 'массив = Range (г & ":" & C) '. Он даст вам то же самое, что «array = Range (« A1: E5 »)' –

+0

, ячейка имеет несколько свойств, одна из которых является '.formulaR1C1', которая получит формулу ячеек (см. Формулу) и'. значение ", которое получит отображаемое значение ячейки. (результат формулы, если имеется). когда ячейка или диапазон vof клеток копируется, - «Диапазон (« A1 »).copy "- и вставляются, это формулы, которые идут с ячейкой, и значение может измениться, если, например, ячейка вставлена ​​в разные рабочие листы, где значения в ячейках, используемых в формуле, различны. если вы хотите, чтобы значения были вставлены, а не формула, используйте '.pastespecial (xlPasteValues)' – user1759942

+0

'array = Range (Cells (startrow, startcol), Cells (endrow, endcol))' –

ответ

0

Если вы получаете содержимое ячеек, они всегда возвращаются как Variant. И все получится намного чище, если использовать параметры вместо глобальных переменных:

Function GetArray(CellRef1 As String, CellRef2 As String) As Variant() 
    GetArray = Range(Range(CellRef1), Range(CellRef2)).Value 
End Function 

Вы бы использовать его как это:

Dim v() As Variant 
v = GetArray("A1", "E5") 

Тогда v() будет содержать Клетка значения. Чтобы получить формулы, нужно изменить функцию немного:

Function GetArrayF(CellRef1 As String, CellRef2 As String) As Variant() 
    GetArrayF = Range(Range(CellRef1), Range(CellRef2)).Formula 
End Function 
+0

, если бы я мог дать я обнял бы меня! ;) у вас есть именно то, что я был после! Огромное спасибо! :) – user3267448

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