Я пытаюсь редактировать код VBA. Я настроил его для своих нужд, но в настоящее время он повторяет тот же процесс более 20 раз, и я в основном ввел код 20 раз и изменил переменные.Я хотел бы запустить цикл, но изменить 2 переменных каждый экземпляр
У меня скорее всего будет до 100 экземпляров, и я не хочу вручную это делать. Как я могу отредактировать этот код, чтобы он выполнялся 100 раз при изменении переменных?
Как вы видите, я включил один и тот же код дважды с небольшими изменениями. Мне нужно было бы изменить тикер и диапазон для каждой итерации, а также для целевого диапазона потребуется переместить 1 столбец за каждый раз.
Кстати, это для того, чтобы вытащить информацию о финансах Yahoo.
Sub Data_Get()
'
' Data_Get Macro
'
Dim ticker1, ticker2, ticker3 As String, sday, smonth, syear, eday, emonth, eyear As Long
ticker1 = Range("L1")
ticker2 = Range("L2")
ticker3 = Range("L3")
sday = Day(Range("L4"))
smonth = Month(Range("L4")) - 1
syear = Year(Range("L4"))
eday = Day(Range("L5"))
emonth = Month(Range("L5")) - 1
eyear = Year(Range("L5"))
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://real-chart.finance.yahoo.com/table.csv?s=" & ticker1 & "&d=" & emonth & "&e=" & eday & "&f=" & eyear & "&g=d&a=" & smonth & "&b=" & sday & "&c=" & syear & "&ignore=.csv" _
, Destination:=Range("$A$1"))
.Name = "data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(5, 9, 9, 9, 9, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://real-chart.finance.yahoo.com/table.csv?s=" & ticker2 & "&d=" & emonth & "&e=" & eday & "&f=" & eyear & "&g=d&a=" & smonth & "&b=" & sday & "&c=" & syear & "&ignore=.csv" _
, Destination:=Range("$C$1"))
.Name = "data2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 9, 9, 9, 9, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Спасибо! Так много! Я сделал эту работу, но моя последняя проблема заключается в том, что у меня есть информация в строке 1 по каждому списку, но когда я запускаю ее, она создает новые столбцы и перемещает вещи в верхней строке. Как я могу это предотвратить? – Namelessandroid
Взгляните на [MS Documentation] (https://msdn.microsoft.com/EN-US/library/office/ff839455.aspx). Я думаю, вы должны использовать 'xlInsertEntireRows' вместо' xlInsertDeleteCells' – OldUgly