2013-05-07 3 views
2

Работа с существующей таблицей, содержащей два раскрывающихся списка. Возможно ли экспортировать или отредактировать данные из этих списков?Редактировать или экспортировать выпадающие списки в Excel

+0

Позвольте мне понять, вы хотите экспортировать список из списка проверки данных на другой лист? –

+0

Нет, данные xls переносятся в базу данных. –

+0

О, я вижу, что вы отредактировали свой ответ ниже. Мой ответ был основан на вашем ответе :). –

ответ

3

В списке проверки данных вы можете использовать эти 3 сценария.

А) Формула, которая относится к диапазону в том же листе

enter image description here

Б) список, который непосредственно вводятся с запятыми

enter image description here

C) Формула, которая относится к именованному диапазону от s AME/другой лист

enter image description here

Теперь нам нужно, чтобы удовлетворить всех трех сценариев в случае, если мы хотим получить этот список.

Чтобы получить доступ к списку ячейки проверки достоверности данных, вы должны использовать Rng.Validation.Formula1

Посмотреть этот код.

Sub Sample() 
    Dim ws As Worksheet 
    Dim dvRng As Range, rng As Range 
    Dim strList As String 
    Dim MyAr() As String 

    Set ws = ThisWorkbook.Sheets("Sheet1") 
    Set dvRng = ws.Range("A1") ' Case A 
    'Set dvRng = ws.Range("C1") ' Case B 
    'Set dvRng = ws.Range("E1") ' Case C 

    '~~> Get the formula in the data validation 
    strList = dvRng.Validation.Formula1 

    '~~> Check if it has an = sign for Case A and Case C 
    If InStr(1, strList, "=") Then 
     strList = Replace(strList, "=", "") 
     Set rng = Range(strList) 
     rng.Copy Sheet2.Range("A1") 
    Else 
    '~~> Case B 
     If InStr(1, strList, ",") Then 
      MyAr = Split(strList, ",") 
      Sheet2.Range("A1:A" & UBound(MyAr) + 1).Resize.Value = Application.Transpose(MyAr) 
     Else 
      Sheet2.Range("A1").Value = strList 
     End If 
    End If 
End Sub 

Я прокомментировал код, чтобы вы не столкнулись с какими-либо проблемами. Тем не менее, если вы это сделаете, просто спросите:

+0

Я просто хотел добавить, что обнаружил, что если я попытаюсь получить Range (MyCell.Validation.Formula1) в событии Change Works, я получаю сообщение об ошибке. Такая же проблема в событии Calculation. Я обнаружил, что обходной путь заключается в том, чтобы поместить этот бит в публичную функцию в стандартный модуль, передав ссылку на ячейку в качестве параметра и вызвать эту функцию из события изменения. –

0

Если кто-то не имеет лучшего представления, я выбрал каждый из элементов в другую ячейку, а затем скопировал это в файл csv, где я могу импортировать его в таблицу.

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