【VBA】×ボタンでフォームが閉じるのを阻止する
Formが閉じる際にQueryCloseが流れるので、そこで阻止すればよい
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "[×]ボタンで閉じることはできません。"
’Trueにすることで閉じるのを阻止
Cancel = True
End If
End Sub
CloseMode = 0は×ボタン押下時に取得する値
1はUnloadによって閉じられた場合
2は現在の Windows オペレーティング環境セッションが終了しようとした場合
3はタスクマネージャーによって閉じられた場合
以上
【VBA】選択したセルにテキストを配置するマクロ
'選択したセルにテキストを配置
Sub insText()
Dim Bar As Shape
Dim cell As String
'アクティブセルを取得
cell = ActiveCell.address
If cell <> "" Then
Set Bar = ActiveSheet.Shapes.AddShape _
(msoShapeRectangle, _
Range(cell).Left, _
Range(cell).Top, _
180, _
50)
'枠内の書式設定
With Bar.Fill
.Visible = msoTrue
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Solid
End With
'枠の書式設定
With Bar.Line
.Visible = msoTrue
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
End With
'枠内のテキストの書式設定
With Bar.TextFrame2
.VerticalAnchor = msoAnchorMiddle
.TextRange.ParagraphFormat.Alignment = msoAlignCenter
.TextRange.Font.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
End With
'図形のスタイルを設定
Bar.ShapeStyle = msoShapeStylePreset7
End If
End Sub
サイズは適当
以上
【VBA】選択したセルに赤枠を配置するマクロ
何かと便利かなと
'選択したセルに赤枠を配置
Sub redFlame()
Dim Bar As Shape
Dim cell As String
'アクティブセルを取得
cell = ActiveCell.address
If cell <> "" Then
'図形の種類、位置情報設定
Set Bar = ActiveSheet.Shapes.AddShape _
(msoShapeRectangle, _
Range(cell).Left, _
Range(cell).Top, _
110, _
25)
'枠内の書式設定
With Bar.Fill
.Visible = msoFalse
End With
'枠の書式設定
With Bar.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
.Weight = 3
End With
End If
End Sub
サイズは適当
以上
【VBA】選択したセルに吹き出しを配置するマクロ
'選択したセルに吹き出しを挿入
Sub insBalloon()
Dim Bar As Shape
Dim cell As String
'アクティブセルを取得
cell = ActiveCell.address
If cell <> "" Then
Set Bar = ActiveSheet.Shapes.AddShape _
(msoShapeRoundedRectangularCallout, _
Range(cell).Left, _
Range(cell).Top, _
170, _
50)
'枠内の書式設定
With Bar.Fill
.Visible = msoTrue
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Solid
End With
'枠の書式設定
With Bar.Line
.Visible = msoTrue
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
End With
'枠内のテキストの書式設定
With Bar.TextFrame2
.VerticalAnchor = msoAnchorMiddle
.TextRange.ParagraphFormat.Alignment = msoAlignCenter
.TextRange.Font.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
End With
'図形スタイルの設定
Bar.ShapeStyle = msoShapeStylePreset7
'吹き出しの方向設定
With Bar.Adjustments
.Item(1) = -0.4
.Item(2) = 1
End With
End If
End Sub
青い図形にする場合は図形スタイルを以下に変え、
Bar.ShapeStyle = msoShapeStylePreset13
文字色を以下に変えればいいかなと
.TextRange.Font.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
サイズは適当
以上
【サクラエディタマクロ】カンマ整列配置
Insert文などでカンマの位置を揃えたい場合など
/** カンマ配置 */
var e = Editor;
var selectStr = "";
var outStr = "";
var lines = "";
var rtnCdList = ["\r\n","\r","\n"];
var rtnIndex = 0;
var topIndex = 0;
var endIndex = 0;
var maxLength = 0;
//選択行取得
selectStr = e.GetSelectedString(0);
//選択文字が存在する場合のみ処理を行う
if(selectStr != ""){
//開始行取得
topIndex = e.GetSelectLineFrom();
//終了行取得
endIndex = e.GetSelectLineTo();
//改行コードの判定
for(var i = 0; i < rtnCdList.length; i++){
if(selectStr.indexOf(rtnCdList[i]) != -1){
rtnIndex = i;
break;
}
}
//指定の改行コードで分割
var lines = selectStr.split(rtnCdList[rtnIndex]);
//右端から不要な文字を除去していく
for(var i = 0; i < lines.length; i++){
for(var k = lines[i].length; k > 0; k--){
if(lines[i].substring(k - 1, k) == " "
|| lines[i].substring(k - 1, k) == ","
|| lines[i].substring(k - 1, k) == " "
|| lines[i].substring(k - 1, k) == "\t"){
lines[i] = lines[i].substring(0, k - 1);
}else{
break;
}
}
//最大文字長取得
var strs = lines[i].split("");
var cnt = 0;
var len = 0;
for(var k = 0; k < strs.length; k++){
if(strs[k].match(/[^\x01-\x7E]/) != null){
cnt = cnt + 1;
}
}
len = strs.length + cnt;
if(len > maxLength){
maxLength = len;
}
}
//カンマ配置
for(var i = 0; i < lines.length; i++){
var cnt = 0;
var strs = lines[i].split("");
for(var k = 0; k < strs.length; k++){
if(strs[k].match(/[^\x01-\x7E]/) != null){
cnt = cnt + 1;
}
}
for(var k = 0; k <= maxLength - cnt; k++){
if(lines[i].length === maxLength - cnt){
lines[i] = lines[i] + ",";
break;
}else{
lines[i] = lines[i] + " ";
}
}
outStr = outStr + lines[i] + rtnCdList[rtnIndex];
}
//出力
e.InsText(outStr);
//範囲を再選択
e.Jump(topIndex, 0);
e.BeginSelect();
e.Jump(endIndex, 0);
e.GoLineEnd_Sel();
e.BeginSelect();
【サクラエディタマクロ】タブ、スペース置換
/** タブ、スペース除去マクロ */
var e = Editor;
var selectStr = "";
var topIndex = 0;
var endIndex = 0;
//選択行取得
selectStr = e.GetSelectedString(0);
//選択文字が存在する場合のみ処理を行う
if(selectStr != ""){
//開始行取得
topIndex = e.GetSelectLineFrom();
//終了行取得
endIndex = e.GetSelectLineTo();
//除去
selectStr = selectStr.replace(/\t| /g, "");
//出力
e.InsText(selectStr);
//範囲を再選択
e.Jump(topIndex, 0);
e.BeginSelect();
e.Jump(endIndex, 0);
e.GoLineEnd_Sel();
e.BeginSelect();
}