2016-11-17 3 views
-1

Im совершенно новый для создания макросов в Excel!Как сделать значение ячейки переменной для массива

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

Sub Macro1() 

MyValue = ActiveSheet.Range("A1") 

ThisWorkbook.Sheets(Array(MyValue)).Select 

End Sub 

Значение при A1 = 1,2,4, соответствующее доступным листам. Помещение значения напрямую работает как шарм.

Thanks

+0

является 'MyValue' ваш массив? –

+0

Значение MyValue равно «1,2,4» должно быть массивом –

+0

, поэтому вы хотите, чтобы ваш массив был 'MyValue (0) = 1',' MyValue (1) = 2' и 'MyValue (2) = 4 '? на каком из них вы хотите выбрать свой рабочий лист? Вы хотите, чтобы петля все их? –

ответ

0

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

Добавление необязательного аргумента в False позволяет выбирать расширенные для многолистных листов.

Option Explicit 

Sub Macro1() 

Dim MyValue 
Dim i As Integer 

MyValue = Split(ActiveSheet.Range("A1"), ",") 

For i = 0 To UBound(MyValue) 
    ThisWorkbook.Sheets(CInt(MyValue(i))).Select (False)  
Next i  

End Sub 
+0

Макрос работает без ошибок, так что хорошо! Но выбран только лист 4. –

+0

Да, спасибо !!! это работы –

0

Я думаю, что это то, что вы ищете.

Sub print_sheets() 
    MyValue = ActiveSheet.Range("A1").Value 

    MyArr = Split(MyValue, ",") 

    For Each Value In MyArr 


     ThisWorkbook.Sheets(CInt(Value)).Activate 
     ' Change the directory below 
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
      "C:\Users\<<<USER>>>>\Documents\" & Value & ".pdf", Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
      True 


    Next Value 


End Sub 

Это считывает A1 и разбивает его. Активирует листы и печатает на бумаге. Я не могу заставить их печатать на pdf, если я не знаю, что назвать листами. РЕДАКТИРОВАТЬ: Я заставил их сохранить с буквенным номером как имя файла.

enter image description here

+0

Если я использую функцию Split, я получаю ошибку несоответствия типов! –

+0

Не знаю, была ли это моя ошибка здесь. Я вижу, что я оставил код с диапазоном («I1»), а не A1. Но другое, что он должен работать, если нет еще чего-то, о чем вы нам не говорите. Отредактирован код до A1. Если это была проблема. – Andreas

+0

это мой код сейчас, возможно, что-то не хватает. Как я уже сказал, что это совершенно новое! –

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