with cells( , )
.Addcomment
.Comment.Visible = False
.Comment.Text = Text:=""
End with
with cells( , )
.Addcomment
.Comment.Visible = False
.Comment.Text = Text:=""
End with
複数シートの選択
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sheets(Array("シート名A","シート名B")).Select
Sheets(Array("シート名A","シート名B")).Select
Sheets(Array("シート名A","シート名B")).Select
アドインのツールバー追加(プロジェクトのPWロックをした状態でツールバーに表示が可能)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub Workbook_AddinInstall()
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Application.CommandBars.add(["Worksheet Menu Bar",,,FALSE])←FALSEを指定するとエクセルを閉じても消えません。
Dim B As CommandBarControl
Set B=A.Controls.Add(Type:=msoControlButton)
B.Style = 3 (←1:アイコンのみ 2:テキストのみ 3:両方)
B.Caption = "何かテキスト"
B.TooltipText = "" ←アイコンの説明
B.FaceId = 数字 標準アイコンのIDを入力
B.OnAction = "XXXX" ←起動する標準モジュール名を記入
End Sub
Private Sub Workbook_AddinInstall()
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Application.CommandBars.add(["Worksheet Menu Bar",,,FALSE])←FALSEを指定するとエクセルを閉じても消えません。
Dim B As CommandBarControl
Set B=A.Controls.Add(Type:=msoControlButton)
B.Style = 3 (←1:アイコンのみ 2:テキストのみ 3:両方)
B.Caption = "何かテキスト"
B.TooltipText = "" ←アイコンの説明
B.FaceId = 数字 標準アイコンのIDを入力
B.OnAction = "XXXX" ←起動する標準モジュール名を記入
End Sub
Private Sub Workbook_AddinInstall()
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Application.CommandBars.add(["Worksheet Menu Bar",,,FALSE])←FALSEを指定するとエクセルを閉じても消えません。
Dim B As CommandBarControl
Set B=A.Controls.Add(Type:=msoControlButton)
B.Style = 3 (←1:アイコンのみ 2:テキストのみ 3:両方)
B.Caption = "何かテキスト"
B.TooltipText = "" ←アイコンの説明
B.FaceId = 数字 標準アイコンのIDを入力
B.OnAction = "XXXX" ←起動する標準モジュール名を記入
End Sub
次にブックを閉じるときにアイコンを削除する処理を行います。
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Dim B As CommandBarControl
Set B = A.Controls.Add(Type:=msoControlButton)
For Each B In A.Controls
B.Delete
Next B
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Dim B As CommandBarControl
Set B = A.Controls.Add(Type:=msoControlButton)
For Each B In A.Controls
B.Delete
Next B
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim A As CommandBar
Set A = Application.CommandBars("Worksheet Menu Bar")
Dim B As CommandBarControl
Set B = A.Controls.Add(Type:=msoControlButton)
For Each B In A.Controls
B.Delete
Next B
End Sub
最後に、ブックを開いたときにアイコン表示のコードを呼び出すように以下の処理を行います。
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub Workbook_Open()
Call Workbook_AddinInstall
End Sub
Private Sub Workbook_Open()
Call Workbook_AddinInstall
End Sub
Private Sub Workbook_Open()
Call Workbook_AddinInstall
End Sub
あとは標準モジュールで以下を記載すればフォームが開く
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Sub XXXX()
UserForm1.Show
End Sub
Sub XXXX()
UserForm1.Show
End Sub
Sub XXXX()
UserForm1.Show
End Sub
アドイン化して配布すればツールバーにアイコンができて、
それを押すだけでユーザーフォームやマクロが実行可能に。
別のフォームに値を渡す
userform1の中で以下を指定します。
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
userform2.label="ABC"
userform2.show
userform2.label="ABC"
userform2.show
userform2.label="ABC"
userform2.show
別のモジュールに値を渡す
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dim X as 型
Call A(X) Aのプロシージャを呼び出す際にXの値を渡します。
・・・
Sub A(ByVal X as 型) 元の変数の値を変更しない値渡し。
・・・
Sub A(ByRef X as 型) 元の変数の値を変更する。参照渡し 。
Dim X as 型
Call A(X) Aのプロシージャを呼び出す際にXの値を渡します。
・・・
Sub A(ByVal X as 型) 元の変数の値を変更しない値渡し。
・・・
Sub A(ByRef X as 型) 元の変数の値を変更する。参照渡し 。
Dim X as 型
Call A(X) Aのプロシージャを呼び出す際にXの値を渡します。
・・・
Sub A(ByVal X as 型) 元の変数の値を変更しない値渡し。
・・・
Sub A(ByRef X as 型) 元の変数の値を変更する。参照渡し 。
コード一覧 (処理系)
エラー発生時の防止処理
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
On error GoTo X
/////コード
Exit Sub
X: ←ここに飛びます
End Sub
処理無効(中断) On error GoTo 0
処理無視継続 On error Resume Next
On error GoTo X
/////コード
Exit Sub
X: ←ここに飛びます
End Sub
処理無効(中断) On error GoTo 0
処理無視継続 On error Resume Next
On error GoTo X
/////コード
Exit Sub
X: ←ここに飛びます
End Sub
処理無効(中断) On error GoTo 0
処理無視継続 On error Resume Next
処理待ち時間を発生させる
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
待 = DateAdd("S",50,Now())
DoWhile
Now()< 待
DoEvents
Loop
待 = DateAdd("S",50,Now())
Do While
Now()< 待
DoEvents
Loop
待 = DateAdd("S",50,Now())
Do While
Now()< 待
DoEvents
Loop
Fl = "C:\Users\デスクトップ" 'フォルダのディレクトリを指定します。
Flnm = Dir(Fl & "\*.xlsx") 'エクセルだった場合
Do While Flnm <> ""
If Flnm = BN Then
GoTo YU
Else: End If
If Right(Flnm, 10) <> "12345.xlsx" Then 'ファイル名の一致のためライト関数やレフト関数の数字に注意
GoTo YU
Else: End If
IU = Split(Flnm, "\") '最終の項目はファイル名なのでファイル名を取得することができます。
For j = 0 To UBound(IU)
Fname = IU(j)
Next j
Workbooks.Open Filename:=Fl & "\" & Flnm 'あとは開きましょう。
Workbooks("ファイル名").Save '上書き保存
Workbooks("ファイル名").Close '閉じる
Workbooks("ファイル名").SaveAs パスとファイル名.拡張子 '新規保存
YU:
Loop
Fl = "C:\Users\デスクトップ" 'フォルダのディレクトリを指定します。
Flnm = Dir(Fl & "\*.xlsx") 'エクセルだった場合
Do While Flnm <> ""
If Flnm = BN Then
GoTo YU
Else: End If
If Right(Flnm, 10) <> "12345.xlsx" Then 'ファイル名の一致のためライト関数やレフト関数の数字に注意
GoTo YU
Else: End If
IU = Split(Flnm, "\") '最終の項目はファイル名なのでファイル名を取得することができます。
For j = 0 To UBound(IU)
Fname = IU(j)
Next j
Workbooks.Open Filename:=Fl & "\" & Flnm 'あとは開きましょう。
Workbooks("ファイル名").Save '上書き保存
Workbooks("ファイル名").Close '閉じる
Workbooks("ファイル名").SaveAs パスとファイル名.拡張子 '新規保存
YU:
Loop
CSV・text(カンマ区切り) 操作
【入力】
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Open "ディレクトリ"For Input As #10 →#番号はファイル番号 読み込むときはInputを使います。
Do Until EOF(10) →EOF関数は最終行に達したらTrueを返す
Line input #10,変数 →Line input は一行ずつ返すo
Loop
Close #10
Open "ディレクトリ" For Input As #10 →#番号はファイル番号 読み込むときはInputを使います。
Do Until EOF(10) →EOF関数は最終行に達したらTrueを返す
Line input #10,変数 →Line input は一行ずつ返すo
Loop
Close #10
Open "ディレクトリ" For Input As #10 →#番号はファイル番号 読み込むときはInputを使います。
Do Until EOF(10) →EOF関数は最終行に達したらTrueを返す
Line input #10,変数 →Line input は一行ずつ返すo
Loop
Close #10
【出力】
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Open "ディレクトリ"For Append As #10
→Append:すでにある内容に追加
output:既にあるものはすべて削除し最初から入力
→Openはその指定場所にファイルがないと新たに作成します。
Print #10,書き込むデータ
→改行が必要な場合は (vbCrLf,vbCr,vbLf)を利用
Close #10
Open "ディレクトリ" For Append As #10
→Append:すでにある内容に追加
output:既にあるものはすべて削除し最初から入力
→Openはその指定場所にファイルがないと新たに作成します。
Print #10,書き込むデータ
→改行が必要な場合は (vbCrLf,vbCr,vbLf)を利用
Close #10
Open "ディレクトリ" For Append As #10
→Append:すでにある内容に追加
output:既にあるものはすべて削除し最初から入力
→Openはその指定場所にファイルがないと新たに作成します。
Print #10,書き込むデータ
→改行が必要な場合は (vbCrLf,vbCr,vbLf)を利用
Close #10
ye="yyyy"
mo = "mm"
da = "dd"
Select Case ye'大正、明治は割愛
Case Is < 1989
元号 = "昭和"
和暦 = ye - 1925
Case Is = 1989
If mo = 1 Then
If da <= 7 Then
元号 = ”昭和”
和暦 = ye - 1925
Else
元号 = ”平成”
和暦 = 1
End If
Else
End If
Case 1990 To 2018
元号 = ”平成”
和暦 = ye - 1988
Case Is = 2019
If mo <= 4 Then
元号 = ”平成”
和暦 = ye - 1988
Else
元号 = ”令和”
和暦 = 1
End If
Case Is > 2019
元号 = ”令和”
和暦 = ye - 2018
End Select
ye="yyyy"
mo = "mm"
da = "dd"
Select Case ye'大正、明治は割愛
Case Is < 1989
元号 = "昭和"
和暦 = ye - 1925
Case Is = 1989
If mo = 1 Then
If da <= 7 Then
元号 = ”昭和”
和暦 = ye - 1925
Else
元号 = ”平成”
和暦 = 1
End If
Else
End If
Case 1990 To 2018
元号 = ”平成”
和暦 = ye - 1988
Case Is = 2019
If mo <= 4 Then
元号 = ”平成”
和暦 = ye - 1988
Else
元号 = ”令和”
和暦 = 1
End If
Case Is > 2019
元号 = ”令和”
和暦 = ye - 2018
End Select
Private Sub Target_MouseDown(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックをすると1 右クリックをすると2を値で返す。
If Btn = 1 Then
'クリック位置の保存
pX = X
pY = Y
EndIf
End Sub
Private Sub Target_MouseMove(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックの検出
If Btn = 1 Then
'マウスが移動した分コントロールを移動
With Target
.Top = .Top + Y - pY
.Left = .Left + X - pX
End With
EndIf
End Sub
Option Explicit
Private pX As Single 'Xはフォームの横軸
Private pY As Single 'Yはフォームの縦軸
Private Sub Target_MouseDown(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックをすると1 右クリックをすると2を値で返す。
If Btn = 1 Then
'クリック位置の保存
pX = X
pY = Y
End If
End Sub
Private Sub Target_MouseMove(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックの検出
If Btn = 1 Then
'マウスが移動した分コントロールを移動
With Target
.Top = .Top + Y - pY
.Left = .Left + X - pX
End With
End If
End Sub
Option Explicit
Private pX As Single 'Xはフォームの横軸
Private pY As Single 'Yはフォームの縦軸
Private Sub Target_MouseDown(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックをすると1 右クリックをすると2を値で返す。
If Btn = 1 Then
'クリック位置の保存
pX = X
pY = Y
End If
End Sub
Private Sub Target_MouseMove(ByVal Btn As Integer,ByVal Shift As Integer,ByVal X As Single,ByVal Y As Single)
'左クリックの検出
If Btn = 1 Then
'マウスが移動した分コントロールを移動
With Target
.Top = .Top + Y - pY
.Left = .Left + X - pX
End With
End If
End Sub
Beep音を出す
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Option Explicit
Declare PtrSafe Function Beep Lib "kernel32"(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub a()
Call Beep(9999, 2000)
End Sub
Option Explicit
Declare PtrSafe Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub a()
Call Beep(9999, 2000)
End Sub
Option Explicit
Declare PtrSafe Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Sub a()
Call Beep(9999, 2000)
End Sub
Beep(音色440Hz以下は低すぎて聞こえない9999Hzは高い音 , 時間1000=1秒)
ド6
1046.502Hz
レ6
1174.659Hz
ミ6
1318.510Hz
ファ6
1396.913Hz
ソ6
1567.982Hz
ラ6
1760.000Hz
シ6
1975.533Hz
ド6
2093.005Hz
WEB操作(Internet Explorer)*IEはサービス終了になりました。
事前に開発タブ-VB-ツール-参照設定で
①Microsoft HTML Object Library ②Microsoft Internet Controls
にチェックを入れる
オートメーションエラーが表示される場合は
Internet Explorerのインターネットオプションで〈保護モードを有効にする〉のチェックを入れます。
#InternetExplorerで開いたWebページの入力操作を行う(文字情報の読み込みは別途手を加える必要があります。)
Dim IE As InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "https:// ~”
待ち時間 = DateAdd("S", 3, Now())
Do While Now() < 待ち時間
DoEvents
Loop
For Each objTag In IE.document.getElementsByTagName("input")
基本は type横の種類(タグ名)を入力してください。
→("select")・・・ラジオボタン
→("textarea")・・・複数行テキストBOX
If InStr(objTag.outerHTML, "X") > 0 Then
←XはWEBサイトの要素にあるものでALTの文字列やname=の文字で可(要素内で完全にヒットする文字列がベスト。)
<ボタンをクリック、チェックボックスにチェックを入れる場合>
objTag.Click
<エントリーBOXへの入力の場合>
objTag.Value = X
<ラジオボタンの場合>
objTag.Value =番号
Exit For
End If
Next
#InternetExplorerで開いたWebページの入力操作を行う(文字情報の読み込みは別途手を加える必要があります。)
Dim IE As InternetExplorer
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "https:// ~”
待ち時間 = DateAdd("S", 3, Now())
Do While Now() < 待ち時間
DoEvents
Loop
For Each objTag In IE.document.getElementsByTagName("input")
基本は type横の種類(タグ名)を入力してください。
→("select")・・・ラジオボタン
→("textarea")・・・複数行テキストBOX
If InStr(objTag.outerHTML, "X") > 0 Then
←XはWEBサイトの要素にあるものでALTの文字列やname=の文字で可(要素内で完全にヒットする文字列がベスト。)
<ボタンをクリック、チェックボックスにチェックを入れる場合>
objTag.Click
<エントリーBOXへの入力の場合>
objTag.Value = X
<ラジオボタンの場合>
objTag.Value =番号
Exit For
End If
Next