Обновление таблицы через VBA - PullRequest
0 голосов
/ 07 августа 2020

У меня есть таблица с данными о свойствах, такими как адрес, почтовый индекс и т. Д. c, и мне нужно найти способ добавить или удалить записи в таблице, содержащей все данные. Чтобы сделать программу защищенной от идиотов, код скрывает ненужные кнопки для задачи, кроме кнопки завершения задачи, либо добавляет, либо удаляет записи. База данных находится на другом листе, по причинам, защищающим от идиотов. Я искал решения, но ничего не помогло, поэтому у меня есть несколько вопросов, и если кто-то сможет объяснить, я буду очень благодарен.

1 - Как мне создать новую строку в таблице 2, не создавая новая строка в листе?

2 - у меня есть три таблицы на одном листе, для ускорения процесса работы, но для большей возможности повторного использования кода и большей защиты от идиотов, может быть, лучше иметь только одна таблица для листа?

3 - Когда я удалю ячейку / строку данных в Table2, переместятся ли остальные ячейки / строки? Или у меня будет пустое место в Table2? Как лучше подойти к этой проблеме? Потому что я ожидаю, что через некоторое время в таблице 2 появятся некоторые изменения, и я не хочу всегда напрямую взаимодействовать с таблицей.

Я обновил рабочую книгу в моем GitHub: https://github.com/carlosefrbarros/Email-Sender-System Любая помощь будет быть ценным =)

РЕДАКТИРОВАТЬ: Вот фрагмент кода

Sub EndAddProperty()

    'Hide Ok Button and unhide others buttons
    Sheets("Property File").Shapes("Sheet4Button7").Visible = True
    Sheets("Property File").Shapes("Sheet4Button8").Visible = True
    Sheets("Property File").Shapes("Sheet4Button9").Visible = True
    Sheets("Property File").Shapes("Sheet4Button10").Visible = True
    Sheets("Property File").Shapes("Sheet4Button12").Visible = False

    'Lock Cells
    Sheets("Property File").Range("I3:N3").Locked = True
    Sheets("Property File").Range("I6:N6").Locked = True
    Sheets("Property File").Range("I9:N9").Locked = True
    Sheets("Property File").Range("I12:N12").Locked = True
    Sheets("Property File").Range("I15:N18").Locked = True

    'Check if the Code of property exist and if does, exit sub
    For Each Cell In Sheets("Database").Range("D1:D100")
        If Sheets("Property File").Range("F3").Value = Cell.Value Then
            MsgBox "This code already exist."
            Exit Sub
        End If
    Next
    
    'If the Code of Property doesnt exist, update the data in the Table2



End Sub

И, говоря проще, как добавить или удалить информацию из таблицы на листе, используя VBA.

1 Ответ

0 голосов
/ 07 августа 2020

Если вы не хотите добавлять строки листа, вы должны вставить ячейки. Можно вставить именно те ячейки, которые находятся под таблицей, и расширить таблицу, чтобы включить их. Это называется добавлением строки таблицы. Для этого есть пункты меню, которые можно щелкнуть и записать.

Однако Excel не сообщит вам, что вставка ячеек (неполных строк листа) вызывает проблемы с форматированием оставшихся частей измененного листа строка. Проще говоря, если строка листа имеет высоту 25 пунктов, вы не можете вставлять ячейки (частичная строка листа) с другой высотой.

Проблема становится еще хуже, если ваши таблицы расположены ниже друг друга. Добавление строки листа выше просто сдвигает нижние таблицы на строку вниз. Но добавление строки таблицы сдвигает вниз только содержимое, оставляя форматирование на месте, что, вероятно, испортит таблицы ниже. То же самое и для удалений.

Поэтому я советую либо придерживаться одной таблицы на листе, либо настаивать на добавлении строк листа.

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