2016-06-28 2 views
0

Я пытаюсь создать массив с месяцами Jan-Dec, и я хочу также иметь год, чтобы он выглядел как «J14» на январь. Я хочу, чтобы это увеличило все, с чем я столкнулся, до следующего месяца, и после 12 пробегов год изменится на «J15». Я буду запускать этот макрос один раз в месяц, поэтому я хочу месяц и увеличиваться на 1 каждый раз, когда я его запускаю. Ниже то, что я до сих пор, пожалуйста, извините, если это не так, как я никогда не использовал массивы, прежде чемЯчейка Array + Loop для месяца и года

Sub test() 
Dim MyArray(1 To 12) As Integer 

MyArray(1) = J 
MyArray(2) = F 
MyArray(3) = M 
MyArray(4) = A 
MyArray(5) = M 
MyArray(6) = J 
MyArray(7) = J 
MyArray(8) = A 
MyArray(9) = S 
MyArray(10) = O 
MyArray(11) = N 
MyArray(12) = D 

For i = 1 To UBound(MyArray) 

Cells(i, 1).Value = MyArray(i) 

Next i 

End Sub 
+2

Я предлагаю вам узнать о Datatypes первой. Символ не может быть содержимым Int-Array. Кроме того, я действительно не понимаю ваш вопрос. Вы будете запускать этот макро один раз в год или как он работает? – lokusking

+0

запускать его раз в месяц, поэтому он должен увеличиваться 1 месяц в месяц. Я рассмотрю типы данных. Благодарю. Я понимаю, что вы имеете в виду о char теперь – user3018495

ответ

1

Вот как это будет работать, если вы просто написать «14» в диапазоне A13. Но это действительно хорошая идея, что вы изучаете типы данных, как предложил первый комментарий. Более того, есть много способов сделать это. Но все-таки:

Option Explicit 

Sub test() 
    Dim i     As Long 
    Dim MyArray(1 To 12) As String 

    MyArray(1) = "J" 
    MyArray(2) = "F" 
    MyArray(3) = "M" 
    MyArray(4) = "A" 
    MyArray(5) = "M" 
    MyArray(6) = "J" 
    MyArray(7) = "J" 
    MyArray(8) = "A" 
    MyArray(9) = "S" 
    MyArray(10) = "O" 
    MyArray(11) = "N" 
    MyArray(12) = "D" 

    For i = 1 To UBound(MyArray) 

     Cells(i, 1).Value = MyArray(i) & Cells(13, 1) 

    Next i 

    Cells(13, 1) = Cells(13, 1) + 1 

End Sub 
+1

привет спасибо, это очень полезно. Я заметил, что знаю, что я сделал с типами данных, и не объявлял об этом. – user3018495

+0

это отображает сразу все 12 массивов, есть ли способ отображать только 1 массив за один проход, поэтому мне нужно будет запустить макрос 12 раз, чтобы получить полный массив? – user3018495

0

Попробуйте

Sub test() 
Dim MyArray(1 To 12) As String '<--| you need to deal with "strings" (like "J"), not "integers" 

MyArray(1) = "J" '<--| strings must be enclosed in quotation marks 
MyArray(2) = "F" 
MyArray(3) = "M" 
MyArray(4) = "A" 
MyArray(5) = "M" 
MyArray(6) = "J" 
MyArray(7) = "J" 
MyArray(8) = "A" 
MyArray(9) = "S" 
MyArray(10) = "O" 
MyArray(11) = "N" 
MyArray(12) = "D" 

For j= 14 To 20 '<--| set here your year range 
    For i = 1 To UBound(MyArray)  
    Cells(i, 15-j).Value = MyArray(i) & CStr(j") '<--| concatenate the month string with the year number 
    Next i 
Next j 

End Sub 
-1
char monthArray[] = {"J","F","M","A","M","J","J","A","S","O","N","D"}; 

for (int j = 00 ; j < 20 ; j ++) { 
    for (int i = 0; i < 12, i++) { 
     char month = monthArray[i]; 
     String myNotation = "month" + j; 
    } 
} 
+2

Это не 'vba' ... – Dave

+0

Я знаю, это C. Но эта логика может решить его проблему. – rtrigo

+0

Это даже не * действительный * C-код. Вам не хватает точки с запятой ... – Laurel

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