Я новый кодер VBA и, по общему признанию, все еще шарахаюсь через него. Я создал очень простой и простой макрос для форматирования отчета.Макрос не будет работать должным образом, если какая-либо ячейка будет нажата на листе перед запуском.
Если открыть файл, не нажимайте любую ячейку или где-нибудь в реальной таблице, и запустить макрос, макрос выполняет безупречно,
Если открыть файл и сделать еще один щелчок, макрос делает не авторизовать мою первую строку и столбцы. Буквально один клик, и мои результаты не достигнуты.
Мне нужно исправить это. Я не уверен, что это вопрос выбора или активного листа. Очень ограниченное понимание.
'Unmerge all Cells in Worksheet
ActiveSheet.Cells.UnMerge
'Delete Columns A1 thru D1
Range("A1:D1").EntireColumn.Delete
'Delete Rows A1 thru A9
Range("A1:A9").EntireRow.Delete
'Cut and Paste Cells
Range("A2").Cut Range("A1")
Range("G1").Cut Range("F1")
Range("P1").Cut Range("O1")
Range("AA1").Cut Range("Z1")
'Sort by Column A to Remove Extra Rows from View
Columns("A:AM").Sort key1:=Range("A:A"), order1:=xlAscending, Header:=xlYes
'Auto Fit Contents in Columns and Rows
ActiveCell.Columns("A:AG").EntireColumn.Select
ActiveCell.Columns("A:AG").EntireColumn.AutoFit
ActiveSheet.Rows.EntireRow.AutoFit
'Delete Empty Columns
Range("B:B, D:D, G:I, K:L, N:N, P:Q, T:V, X:Y, AA:AB, AD:AF").EntireColumn.Delete
'Remove Wrap Text from Cell B1
Range("B1").WrapText = False
'Autofit Contents of Columns
Range("A1:AF1").Columns.AutoFit
'Autofit Row A2 Contents
Range("A2:A2").Rows.AutoFit
'Save File As
Application.GetSaveAsFilename
Спасибо. Сделано это изменение, похоже, более длинный эффект строки заголовка, но теперь он не сортирует, чтобы удалить пробелы, если выбрана ячейка со строкой заголовка. Ughh .. Im думает, я просто изменяю это, поэтому первым шагом является выбор A1, столбца, который не имеет никакого значения, и, похоже, не влияет на конечный результат? ... Я действительно не хотел бы работать над этим грубо, но вместо этого понимаю, что я сделал неправильно, поэтому программно я не делаю таких ошибок, как это, когда я научу писать эти макросы. – user7263910
OK - вот некоторые предложения по созданию код более надежный: 1. Узнайте о различии между относительными и абсолютными ссылками в Excel (ref: https://support.office.com/en-us/article/Switch-between-relative-absolute-and-mixed-references -dfec08cd-ae65-4f56-839e-5f0d8d0baca9) 2. Узнайте, как использовать объект Range в Excel VBA (ссылка: https://msdn.microsoft.com/en-us/library/office/ff838238.aspx) - особенно, как использовать нотацию Cells (как рекомендует статья) Это сделает вашу программу гораздо менее подверженной тем проблемам, которые вы испытываете. – Ben
Хотя я ценю то, что вы говорите, всегда будут те же строки и столбцы, которые нужно удалить, поэтому я не сделал его более динамичным. Я мог бы использовать точные ссылки. Единственная проблема заключается в том, что когда пользователь нажимает на любом месте листа, это заставляет вещи перепутаться, но только в сегменте автозапуска. Все остальное выполняется безупречно. Я рассмотрю информацию, которую вы приложили, я ценю подсказку :), я согласен, что буду тратить больше времени на изучение этого. Я не называл диапазон, потому что столбцы всегда будут одинаковыми, количество строк будет меняться каждый месяц в зависимости от amoun – user7263910