Excel2000-2003 VBA 基本手法 [質問Form] TSESTop |
入力個所をバック黄色にしている、印刷時にはバックカラーを白地で出力したい。 「ファイル」「ページ設定」『シート』タブ「白黒印刷」チェック |
見積書で顧客名や担当名などを一覧選択で入力しているが、このデータが全ファイルごとに保存されてしまう。 Sheet入力用と出力用と分け、出力用を新規Bookにコピーしてから新規Bookだけを保存する。 |
半角の文字列を全角文字に変換 =JIS(文字列) 全角の文字列を半角文字に変換 =ASC(文字列) *「英数字、カタカナ、記号」が対象。「ひらがな」は半角にはならない。 シート関数をVBEから使うには次のようにする、 myAc = Application.WorksheetFunction.Asc(Range("D2")) Excel2000では、WorksheetFunction.JIS()は使えない。 |
入力した数字が、数字と文字になり並べ替えがうまくいかない 書式が標準で少数を入力した場合に発生する場合があり、書式を文字や数字にしてもだめだ。 StrConv()で全てを文字に変換する。 |
月末日を計算する 当月 =DATE(YEAR(D5),MONTH(D5)+1,1)-1 または =EOMONTH(D5,0) 前月の =DATE(YEAR(D5),MONTH(D5),1)-1 |
ブックを開く Workbooks.Open FileName:=" " |
ブックを閉じる Workbooks.Close ActiveWorkbook.close Workbooks(" ").Close Workbooks(2).Close |
ブック保存、確認メッセージなし Workbooks(" ").Close SaveChanges:=True 保存しない、〃 Workbooks(" ").Close False 上書き保存 ActiveWorkbook.Save Workbooks(" ").Save ActiveWorkbook.SaveAs Filename:="" |
ブックをアクティブに .Activate |
シート挿入 Worksheet.Add 位置と枚数指定 Worksheet.Add After:=Worksheets(2),Count:=3 |
シートをアクティブに Worksheets("").Activate Worksheets(2).Activate |
シート移動 Worksheets("ws1").Move After:=Worksheets("ws3") |
シート複写 Worksheets("ws1").copy Worksheets("ws1").copy After:=Worksheets(2) sheet1を新規book作成後にコピー Worksheets(1).Copy |
シート削除 Worksheets("ws3").Delete 削除確認をしない Applicarion.DisplayAlerts=False |
シート非表示 Worksheets(" ").Visible=False |
オブジェクトの連続選択 例)チェックボックスを連続非表示 For i = 1 To 20 ActiveSheet.Shapes.Range(”CheckBox”& i).Visible = False '.Delete '.Select Next |
行の選択 Worksheets("ws1").Rows(2).Select 範囲指定、Rows("2:8") 行の削除する時は、.Select の所を .Delete |
列の選択 Worksheets("ws1").Columns("C").Select 範囲指定、("C:D") |
セルの選択 Range("E2").Select Range("A2:C6"). Range("定義名"). 行"2:2"、列"B:B" Cells(2,5).Activate Cells(2,"E"). |
セルの現在位置 行= ActiveCell.Row 列= ActiveCell.Column |
選択されたセルの範囲の行列数 行数 = Selection.Rows.Count 列数 = Selection.Columns.Count |
セル範囲のサイズを変更する Resize( 行,列 ).Select |
セルの値 Range("B2").Value=123 ,"12,000",
"2001/6/2", セルの数式 Range("B2").Formula="=A2+B1" ,"=SUM(A2:A9)" 相対参照 Range("B2").FormulaR1C1="=RC[-1]+R[-1]C" |
セルのコピー/貼付け Selection.Copy ActiveSheet.Paste Range().Copy Destination:=Range() |
セルのデータクリア Range("B2").Value="" ActiveCell.Value="" |
アクティブセル領域(空白で囲まれた範囲) Range("B2").CurrentRegion.Select *保護Sheetに使えない 見出し部を指定する方法、 Range("A1").CurrentRegion.Select |
For Each...Next 、オブジェクト数を意識しなくて良い |
最終データ行 Activate.UsedRange.Rows.cunt ただし、空行でもデータ行とみなす(空行とは行選択し[Delete]キーを押した。) |
最終データ行 Range("A65536").End(xlUp) 列 Range("A2").End(xlRight) 次の行 ActiveCell.Offset(1, 0).Select 列 Offset(0, 1) |
ファイルの読込み、保存するフォルダのパス Application.DefaultFilePath 初期値は「My Documents」 |
コンボBOX リスト項目代入 Cmb1.RowSource = "担当" 、Range("A2:D10") |
オートメーション エラー Excel2000は、1シートのCheckBox数に制限があり約2000個以上でエラーになる。 このエラーが発生したら、Excelの再起動しないと動作不安定 |