【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();
 }