2017-01-05 15 views
-1

私は新しい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 

答えて

0

このブロックは、私には間違っているになります。

'Auto Fit Contents in Columns and Rows 
ActiveCell.Columns("A:AG").EntireColumn.Select 
ActiveCell.Columns("A:AG").EntireColumn.AutoFit 
ActiveSheet.Rows.EntireRow.AutoFit 

ActiveSheetへのActiveCellを変更してみてください:

'Auto Fit Contents in Columns and Rows 
ActiveSheet.Columns("A:AG").EntireColumn.Select 
ActiveSheet.Columns("A:AG").EntireColumn.AutoFit 
ActiveSheet.Rows.EntireRow.AutoFit 

(あなたは相対参照ではなく、絶対参照を使用しているため、ActiveCell.Columnsを( "A:AG")は、ワークシートの起点から始めるのではなく、クリックしたセルに関連して表示されます)

+0

ありがとう。その変更を加えれば、ヘッダー行が長く効くように見えますが、ヘッダー行のセルが選択されている場合は、空白を削除するようにソートされていません。 Ughh ..私は思っています、私はこれを変更するだけですので、最初のステップは、A1を選択することです、それはdoesntの任意の値を持って、最終結果に影響を与えないように見える? ...私は本当にそれを周りに取り組むのが好きではありませんが、プログラマチックに間違ったことを理解する代わりに、私はこれらのマクロを書くことを学ぶので、このようなエラーはこれ以上起きません。 – user7263910

+0

OK - より堅牢なコード: 1. Excelでの相対参照と絶対参照の違いについて学びます(ref:https://support.office.com/en-us/article/Switch-between-relative-absolute-and-mixed-references)。 -dfec08cd-ae65-4f56-839e-5f0d8d0baca9) 2. Excel VBAでRangeオブジェクトを使用する方法を学習します(ref:https://msdn.microsoft.com/en-us/library/office/ff838238.aspx) - 特にセル表記を使用する方法(記事の推奨どおり) これにより、発生している問題の種類が少なくなる傾向があります。 – Ben

+0

あなたの言っていることを高く評価していますが、削除する必要のある行と列は常に同じであるため、私はそれをより動的にしませんでした。私は正確な参照を使用することができます。唯一の問題は、ユーザーがシート内の任意の場所をクリックすると、オートフィットセグメントでのみ、物事が乱れることです。他のすべては完璧に実行されます。私はあなたが添付した情報を見直します、私はヒントをありがとう:)私はこれを学ぶより多くの時間を費やすことに同意します。私は列が常に同じであるため名前の範囲を指定しなかったため、amoonに応じて行の量が毎月可変になります – user7263910

関連する問題