Archive for the ‘VBA’ Category

入力規則 Alt>D>L

金曜日, 2月 14th, 2020

プロパティ一覧

■指定した間の整数のみ入力可能にする
■日付の入力規則を設定する
■リストの値のみ入力可能にする
■IMEモードを設定する
■セルの入力規則を変更する

設定ダイアログ対比で丁寧な解説

入力規則の設定を調べる

入力設定の有無を判定

Sub 自動記録_入力規則IMEオフ_コメント()
    
    With Selection.Validation
        .Delete '入力規則を削除
        '入力規則の追加
        .Add Type:=xlValidateInputOnly, _
        AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween
        'Type入力規則の種類
        'AlertStyle入力規則でのエラーのスタイル
        'Operator入力規則の演算子
        .IgnoreBlank = True 'True空白値の入力許可
        .InCellDropdown = True  'Trueドロップダウンリスト表示
        .InputTitle = ""    '入力規則ダイアログボックスのタイトル
        .ErrorTitle = ""    '入力規則で発生するエラーダイアログボックスのタイトル
        .InputMessage = ""  '入力規則でのメッセージ
        .ErrorMessage = ""  'エラー時のメッセージ
        .IMEMode = xlIMEModeOff '日本語入力をIMEオフ(英語モード)に設定
        .ShowInput = True   'Trueセルを選択するとメッセージ表示
        .ShowError = True   'Tureなら無効なデータ入力時にエラーメッセージ表示
    End With
    
End Sub

 

ファイル名 変更 リネーム

土曜日, 2月 8th, 2020
Sub Sample()
    Name "C:\Work\Sample.txt" As "C:\Work\Test.txt"
End Sub

シート コピー 名前

土曜日, 2月 8th, 2020
Dim コピー元シート名
    コピー元シート名 = "_"

    'シートAを先頭にコピー
    Worksheets(コピー元シート名).Copy before:=Worksheets(1)
    
    'シートAを末尾にコピー
    Worksheets(コピー元シート名).Copy after:=Worksheets(Worksheets.Count)

    'シートに名前を付ける
    ActiveSheet.Name = Format(Date, "mmdd") & "_" & Format(Time, "hhmm")

ブック パス フルパス ファイル名

土曜日, 2月 8th, 2020
' ブックのフォルダまでのパス
msgbox ThisWorkbook.Path

' ブックのファイル名までのパス
msgbox ThisWorkbook.FullName

置換

火曜日, 9月 3rd, 2019
Const str削除文字列 As String = "削除文字列"

    Selection.Replace What:=str削除文字列, Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
構文  Object.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte)

 設定項目    内容
 Object      Rangeオブジェクト
 What       検索するデータを指定します [省略不可]
 Replacement 検索したデータを置き換える文字列を指定します [省略不可]
 LookAt     完全に同一なセルだけを検索(xlWhole)、
             一部分でも一致するセルの検索(xlPart)[省略可能]
 SeachOrder 検索方向を指定します。列方向に検索する(xlByColumns)、
             行方向に検索する(xlByRows)[省略可能]
 MatchCase  大文字と小文字を区別する(True)、区別しない(False)[省略可能]
 MatchByte  半角と全角を区別する(True)、区別しない(False)[省略可能]

replaceFormat 検索条件に一致するセルの書式を設定するときにTrueを設定

 

関数 逆順

火曜日, 8月 27th, 2019
Function 逆順(単セル As Range)
    
    Dim i As Integer
    If 単セル.Count = 1 Then
        For i = Len(単セル) To 1 Step -1
            逆順 = 逆順 & Mid(単セル, i, 1)
        Next i
    Else
        逆順 = "引数は1つのセルを選んでね"
    End If
    
End Function

行全体EntireRow

日曜日, 8月 25th, 2019
Sub r折り返し()

    If ActiveCell.WrapText = False Then
        Selection.WrapText = True
        Selection.EntireRow.AutoFit
    Else
        Selection.WrapText = False
    End If

End Sub

折り返しWrapText

日曜日, 8月 25th, 2019
Sub r折り返し()

    If ActiveCell.WrapText = False Then
        Selection.WrapText = True
        Selection.EntireRow.AutoFit
    Else
        Selection.WrapText = False
    End If

End Sub

数式の代入/取得

月曜日, 7月 22nd, 2019

A1形式で数式の設定/取得
ActiveCell.Formula = “=A1+B1”

R1C1形式で数式の設定/取得
絶対参照
ActiveCell.FormulaR1C1 = “=R1C1+R1C2”
相対参照
ActiveCell.FormulaR1C1 = “=RC[-2]+RC[-1]”

引数が可変(ParamArray)

日曜日, 7月 21st, 2019
Function jointText(ParamArray 範囲())
    
    Dim i As Long
    Dim cell As Range
    Const 区切り文字 As String = "-"
    
    For i = 0 To UBound(範囲)
        If 範囲(i).Count > 1 Then
            For Each cell In 範囲(i)
                jointText = jointText & 区切り文字 & cell
            Next cell
        Else
            jointText = jointText & 区切り文字 & 範囲(i)  '2個目以降
        End If
    Next i
    jointText = Right(jointText, Len(jointText) - Len(区切り文字))
    
End Function

※省略可能なOptionalは使えない