Я перестал использовать относительную адресацию и перестал использовать [] вместо Range. Код, который работает (но не правильно) ниже
Dim rStat, cLoan As Integer
Dim tabname, xFrom As String
Sheets("Status").Select
[a1].FormulaR1C1 = "=Now()"
Sheets("Status").Select
cLoan = 0
Do While Cells(2, 2 + 3 * cLoan) <> Empty
rStat = 4
tabname = Sheets("Status").Cells(2, 2 + 3 * cLoan)
While Cells(rStat, 1 + 3 * cLoan) <> Empty
If (Sheets("Status").Cells(rStat, 3 * cLoan + 2) = Empty) _
Or (Sheets("Status").Cells(rStat, 3 * cLoan + 3) = Empty) Then
Sheets(tabname).Range(Sheets("Status").Range(Sheets("Status").Cells(rStat, 1
+ 3 * cLoan).Value)) = [a1]
Sheets(tabname).Range(Sheets("Status").Range(Sheets("Status").Cells(rStat, 1
+ 3 * cLoan)).Value).NumberFormat = "m/d/yyyy"
End If
rStat = rStat + 1
Wend
cLoan = cLoan + 1
Loop
На первой итерации тест на пустую ячейку не проходит, поэтому код объекта пропускается. Тест проходит вторую итерацию, поэтому rStat равен 5. cStat по-прежнему равен нулю.
Структура данных на листе «Статус» [стоит 1000 слов]:
' A B C P
'4 P3 aa bb P3
'5 P4 cc
'6 P5 dd
Тест обнаруживает, что C5 пуст, поэтому задача состоит в том, чтобы поместить дату [A1] в P4 [содержимое A5] листа табуляции. т.е. tabname.Range ("P4") = дата, где P4 происходит от A5.
Код помещает дату в P3 вместо P4.
Я определил, что код использует адрес P4 на листе состояния [обратите внимание, что данные P3 хранятся в ячейке P4] и использует это содержимое по этому адресу, P3, в качестве места назначения на листе имени вкладки. То есть tabname.Range ("P3") = дата.
Я не определил, как или почему он это делает.
Удаление ".value" из первой из 2 строк ['store' и 'format'] не меняет место назначения или его содержимое. Still tabname.Range ("P3") = дата.
Мне нужно сказать tabname.Range ("содержимое Status.Range (" A5 ")) = дата
Если я достану первые «Листы (« Статус »).»,
Sheets(tabname).Range(Range(Sheets("Status").Cells(rStat, 1 + 3 *
cLoan)).value) = [a1]
не было ничего [пустого?] Хранимого tabname.P3 - дважды. tabname.P3 выбран, но пуст после завершения макроса. В 3-й раз, когда я запустил этот же код, я получил ошибку компилятора: с выделенным 2-м «Range», «Неверное количество аргументов или неправильное присвоение свойства».
Я удалил «.value» и снова побежал. Нет ошибки компилятора, но выделено tabname.O3, и P3 и P4 все еще содержат фиктивные значения, которые я поместил туда, чтобы увидеть, были ли они проигнорированы или сохранены пробелы. Они оба были проигнорированы - все еще мои поддельные ценности.
Я поместил фиктивные данные в tabname.O3, чтобы посмотреть, не были ли они пропущены или проигнорированы / просто выделены и снова получили ошибку компилятора.
Будем благодарны за любые предложения.
Мой текущий код работает отлично.
Таблица состояния шире, чем 26 столбцов, поэтому мне нужно вычислить ссылки на столбцы [colLetter ()]
rStat = 4
tabname = Sheets("Status").Cells(2, 2 + 3 * cLoan)
While Cells(rStat, 1 + 3 * cLoan) <> Empty
A_Stat = colLetter(1 + 3 * cLoan) & CStr(rStat)
Хранилище данных правильное, и следующая строка, форматирование этой даты, тоже работает. Я ожидал большего форматирования, чем делал.
Sheets(tabname).Range(Sheets("Status").Range(A_Stat)).Value = [a1]
Sheets(tabname).Range(Sheets("Status").Range(A_Stat)).NumberFormat =
"m/d/yyyy"
Когда все решено, как выйти / покинуть этот пост? Просто прекратили писать? В инструкции написано «Не говори спасибо».