忍者ブログ
  • 2026.05«
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • » 2026.07
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2026/06/19 04:17 】 |
イベント取得
入力されたイベントを拾う。

フムフム






Private Sub Worksheet_Change(ByVal Target As Range)

'A1に入力されたときのみイベントを拾う
'その他の値変更に関してはスルー
If Target.Column = 2 And Target.Row = 8 Then

'取得値を書き込み
Range("B13").Value = Target.Value

End If

End Sub




PR
【2009/02/20 19:44 】 | EXCEL | 有り難いご意見(0) | トラックバック()
エクセルVBAの覚書
動的配列の宣言

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
【2009/02/10 14:13 】 | EXCEL | 有り難いご意見(0) | トラックバック()
行を自動で変わるようにしよう
行番号を後々入れなおすのめんどくさいから、
こんなのはどうかな?


=ROW() + x (※ x は任意)


番号に整合をとる為にxに数字を入れて調整するといい感じ。
【2009/01/30 16:29 】 | EXCEL | 有り難いご意見(0) | トラックバック()
ドキュメントをみんなで共有してみる?
勝手にマージしてくれるんで結構便利…



だけど、一部機能が使えないわけで。
【2009/01/15 14:56 】 | EXCEL | 有り難いご意見(0) | トラックバック()
| ホーム |

忍者ブログ [PR]