|
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
|
入力されたイベントを拾う。
フムフム
PR |
|
動的配列の宣言
Dim MyArray() As String 指定したファイル(開いていること)にワークシートを追加し、名前を付ける Workbooks("Filename.xls").Sheets.Add Workbooks("Filename.xls").ActiveSheet.Name = "SheetName" エクセル関数をVBAで使う 事例では、関数 count を使っている d = WorksheetFunction.Count(Range("E:E")) 指定したセルの読み上げ バージョン2002以降。 Range("Q25").Speak 自己パス名を取得(その1)最後に\付き MyPath = Left(ActiveWorkbook.FullName, _ Len(ActiveWorkbook.FullName) - Len(ActiveWorkbook.Name)) 自己パス名を取得(その2)最後に\なし ActiveWorkbook.Path アクティブなファイル名を取得 myfile = ActiveWorkbook.Name アクティブなファイル名を取得(フルパス付き) myfile = ActiveWorkbook.FullName マクロを実行しているファイル名を取得 myfile = ThisWorkbook.Name ワークシートの数 Worksheets.Count シート名の表示 MsgBox Worksheets(SheetNO).CodeName ユーザーフォームの表示 UserForm.show ユーザーフォームの非表示 Unload UserForm ユーザーフォーム上のチェックボックスのチェックを調べる If UserForm1.CheckBox1.Value = True Then MsgBox “チェックされています。” End If ワークシートウインドウの最小化 ActiveWindow.WindowState = xlMinimized ワークシートウインドウの最大化 ActiveWindow.WindowState = xlMaximized 選択範囲のセルの書式を文字列にする Columns("F:L").Select Selection.NumberFormatLocal = "@" エクセルファイルを開く Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & エクセルファイル名 ファイルオープンのダイアログボックスを開き、エクセルファイルを開きます。 Application.Dialogs(xlDialogOpen).Show ファイルオープンのダイアログボックスでファイル名を取得 (Filename:フルパス付き Filename2:ファイル名のみ) Dim Filename As Variant Dim Filename2 As Variant Filename = Application.GetOpenFilename _ ("csvファイル (*.csv), *.csv", , "ファイルの選択", , False) ‘True とすると複数選択可能 Filename2 = Dir(Filename) アクティブなエクセルファイルのクローズ ActiveWorkbook.Close エクセルファイルのクローズ Workbooks(エクセルファイル名).Close エクセルファイルを保存せずにクローズ Workbooks(ActiveWorkbook.Name).Close savechanges:=False エクセルファイルを保存してクローズ Workbooks(ActiveWorkbook.Name).Close savechanges:=True 開いているエクセルファイルに名前を付けて保存する Workbooks(開いているファイル名).SaveAs (新しいファイル名) ファイルの削除 Kill myXlsFile テキストファイル・バイナリファイルの処理(シーケンシャル入力モード、バイト単位での入力)。 myFNo = FreeFile '使用可能なファイル番号を取得 Open myCsvFile For Input As #myFNo ' ファイルをシーケンシャル入力モードで開きます。 MaxSize = LOF(myFNo) ' ファイルのサイズをバイト数で取得します。 ' Fort~Nextループを使って、 For NextChar = 1 To MaxSize - 1 Step 1 ’すべての文字を前から読み込みます。 Seek #myFNo, NextChar ' 位置を設定します。 MyChar = Input(1, #myFNo) ' 文字を読み込みます。 ‘ここで処理をします。 Next NextChar Close #myFNo ' csvファイルを閉じます。 テキストファイルの処理(シーケンシャル入力モード、行単位での入力)。 myFNo = FreeFile '使用可能なファイル番号を取得 Open myTextFile For Input As #myFNo ' ファイルをシーケンシャル入力モードで開きます。 Do While Not EOF(myFNo) ' ファイルの終端までループを繰り返します。 Line Input #myFNo, myBuf ' 行を変数に読み込みます。 ‘ここで処理をします。 Loop Close #myFNo 'ファイルを閉じます。 シート間のコピーペースト(その1) Worksheets("Sheet3").Rows("1:1").Copy Worksheets("Sheet2").Paste (Rows("1:1")) シート間のコピーペースト(その2) Worksheets(S_sheet).Rows(row_no).Copy (Worksheets(D_sheet).Rows(D_row_no)) セル幅を指定 Columns("D:D").ColumnWidth = 6.5 セルの高さを指定 Rows("9:9").RowHeight = 40.5 列の非表示 Columns("B:B").EntireColumn.Hidden = True 列の表示 Columns("B:B").EntireColumn.Hidden = False 確認のメッセージを出さずにSheet2を削除する Application.DisplayAlerts = False Worksheets("Sheet2").Delete Application.DisplayAlerts = True Yes (ms=6) No (ms=7) の確認ダイアログ ms = MsgBox("メッセージ。続けますか?", vbYesNo) メッセージダイアログボックス内で改行する MsgBox("改行して二行で表示します。" & vbCr & _ "これが二行目です。") 正の整数のみを入力する Do MyValue = InputBox("正の整数のみを入力します") Loop Until MyValue > 0 And IsNumeric(MyValue) = True アクティブなシートを保護する ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True アクティブなシートの保護を解除する ActiveSheet.Unprotect 円を描く Set WShape = Worksheets("Sheet1").Shapes Set Obj1 = WShape.AddShape(msoShapeOval, h_oval, v_oval, 18, 18) ‘ 18, 19 とすれば楕円形 With Obj1 .Fill.Visible = msoFalse '塗りつぶし無し .Line.Weight = xlThin '線を細線に、xlThinの代わりに1, 2, 3, 4 でもよい .Name = "maru1" End With 円を削除 With Worksheets("Sheet1") .Shapes("maru1").Delete End With Range()の使い方 この例では、セルA1からA10までに空白文字列を入れている For T = 1 To 10 Range("A" & T) = “” Next T 範囲を指定して印刷 ActiveSheet.PageSetup.PrintArea = "$A$1:$AO$46" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 一時的にプリンタを切り替える tmpprtname = ActivePrinter ‘アクティブプリンタ名を保存 Application.ActivePrinter = "プリンタ名、マクロの記録で取得すること" ‘ここで処理 Application.ActivePrinter = tmpprtname ‘保存していたプリンタ名を戻す Withの使い方 With Workbooks(1).Worksheets(1) .Cells(RowPos1, 3) = 1 .Cells(RowPos1, 3) = 2 .Cells(RowPos1, 3) = 3 .Cells(RowPos1, 3) = 4 End With Setの使い方 Set WS = Worksheets(1).Worksheets(1) WS.Cells(RowPos2, 3) = 1 WS.Cells(RowPos2, 3) = 2 WS.Cells(RowPos2, 3) = 3 WS.Cells(RowPos2, 3) = 4 Functionの使い方 Sub Main() MsgBox Fname(10) ‘ 5と表示されます。 End Sub Function Fname(a) Fname = a / 2 End Function |
|
行番号を後々入れなおすのめんどくさいから、
こんなのはどうかな?
番号に整合をとる為にxに数字を入れて調整するといい感じ。 |
|
|
|
| ホーム |
忍者ブログ [PR] |

