Ячейка на «этом» листе имеет адрес ячейки на «этом» листе.Я пытаюсь изменить содержимое ячейки на этом листе - PullRequest
0 голосов
/ 02 мая 2019

Я перестал использовать относительную адресацию и перестал использовать [] вместо 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"

Когда все решено, как выйти / покинуть этот пост? Просто прекратили писать? В инструкции написано «Не говори спасибо».

1 Ответ

1 голос
/ 02 мая 2019

Например:

Dim thisSheet As WorkSheet
Dim thatSheet As WorkSheet

Set thisSheet = ThisWorkbook.Sheets("this")
Set thatSheet = ThisWorkbook.Sheets("that")

thatSheet.Range(thisSheet.Range("A5").Value) = Date

Если A5 на листе «this» содержит значение «P4», тогда этот код заполняет дату в P4 на листе «that»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...