【Excel】右方向に入力を進める

横方向に項目が並んでいる場合に、入力を効率化する小技を紹介させて頂きます。

①「ファイル」をクリック

②「オプション」をクリック

③「Enterキーを押したら、セルを移動する」の方向を「右」に設定

【Excel】同じ文字を一度に複数セルに入力する

ちょっとした小技です。
同じ文字を一度に複数セルに入力したい時、
1つ目のセルにまずは入力し、そのセルを他のセルにコピーでもできますが、少し手数の少ない方法を紹介させて頂きます。

①一度に入力したい範囲を選択

②文字を入力

③「Ctrl」キーを押しながら「Enter」キーを押下

【Excel】Delete時に元の関数をセット

VLOOKUP 関数等を利用している場合、スポット的に直接値を入れたいケースがあると思います。

直接入れた値の削除時にもともと設定してあったVLOOKUP関数を再セットするプログラムを作成します。

このエクセルファイルの作り方

①マクロを使えるようにする
マクロを使えるようにする」を参照

②VLOOKUP関数の参照元、先を作成

③「Alt + F8」を押して表示される以下の画面で「マクロ名」を「FunctionDisplayOnDeletion」として「作成」を押す

④ Microsoft Visual Basic for Applications」にて以下のコードを記載

Sub FunctionDisplayOnDeletion()
    Dim searchValueRow As Integer: searchValueRow = 1 '★検索値列
    Dim startFuncRow As Integer: startFuncRow = 2 '★VLOOKUP関数設定開始行
    Dim startFuncCol As Integer: startFuncCol = 2 '★VLOOKUP関数設定開始列
    Dim endFuncCol As Integer: endFuncCol = 3 '★VLOOKUP関数設定終了列
    
    Dim c As Range, i As Long
    For Each c In Selection
        If c.Row >= startFuncRow _
           And c.Column >= startFuncCol _
           And c.Column <= endFuncCol Then
            c.Value = "=IFERROR(VLOOKUP(" & Cells(c.Row, searchValueRow).Address(False, False) & ",品目情報!$A$2:$C$5," & c.Column & ",FALSE),"""")"
        Else
            c.Value = ""
        End If
    Next c
    
End Sub
Sub AutoActivateSheet_Name()
    'DeleteKeyを押すと「FunctionDisplayOnDeletion」マクロ実行
    Application.OnKey "{Delete}", "FunctionDisplayOnDeletion"
    Application.OnKey "^{Delete}", "FunctionDisplayOnDeletion"
End Sub
Sub AutoDeactivateSheet_Name()
    'DeleteKeyへの割り当て解除
    Application.OnKey "{Delete}"
    Application.OnKey "^{Delete}"
End Sub
Sub Auto_Open()
    '「見積り入力」シートがアクティブになったら「AutoActivateSheet_Name」マクロ実行
    Worksheets("見積り入力").OnSheetActivate = "AutoActivateSheet_Name"
    '「見積り入力卸」シート以外がアクティブになったら「AutoDeactivateSheet_Name」マクロ実行
    Worksheets("見積り入力").OnSheetDeactivate = "AutoDeactivateSheet_Name"
End Sub

【Excel】Excelで実地棚卸

Excelで実地棚卸を管理するプログラムを作成します。

このエクセルファイルの作り方

①マクロを使えるようにする
マクロを使えるようにする」を参照

②実地棚卸の表を作成

③ 「Alt + F8」を押して表示される以下の画面で「マクロ名」を「SearchGoods_InputInventoryQuantity」として「作成」を押す

④ Microsoft Visual Basic for Applications」にて以下のコードを記載


Public enterFlg As Boolean

Sub SearchGoods_InputInventoryQuantity()

'検索文字入力行・列

Dim searchValueRow As Integer: searchValueRow = 1 '★

Dim searchValueCol As Integer: searchValueCol = 2 '★

'検索対象列

Dim searchTargetCol As Integer: searchTargetCol = 2 '★

'検索文字'

Dim searchValue As String: searchValue = Cells(searchValueRow, searchValueCol).Value

'棚卸数量入力行・列

Dim inventoryQuantityRow As Integer: inventoryQuantityRow = 2 '★

Dim inventoryQuantityCol As Integer: inventoryQuantityCol = 2 '★

'棚卸数量転記対象列

Dim copyQuantityTargetCol As Integer: copyQuantityTargetCol = 8 '★

'商品コード未入力メッセージ'

Dim codeNotEnteredMessage As String: codeNotEnteredMessage = "商品コードを入力してください" '★

'重複メッセージ'

Dim duplicateMessage As String: duplicateMessage = "既に入力があります" '★

'開始行

Dim startRow As Integer: startRow = 5 '★

'終了行

Dim lastRow As Integer: lastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1

'アクティブCellが商品コードまたは棚卸数量欄でなければアクティブセルの移動のみ

Dim activeRow As Integer: activeRow = ActiveCell.Row

Dim activeCol As Integer: activeCol = ActiveCell.Column

'商品コード検索

If activeRow = searchValueRow And activeCol = searchValueCol Then

For i = startRow To lastRow Step 1

If Cells(i, searchTargetCol).Value <> searchValue And searchValue <> "" Then

Rows(i).Hidden = True

Else

Rows(i).Hidden = False

End If

Next

Cells(activeRow + 1, activeCol).Select

'棚卸数量入力(1回目)

ElseIf activeRow = inventoryQuantityRow And activeCol = inventoryQuantityCol And enterFlg = False And Cells(inventoryQuantityRow, inventoryQuantityCol) <> "" Then

If Cells(searchValueRow, searchValueCol).Value = "" Then

MsgBox codeNotEnteredMessage

Cells(searchValueRow, searchValueCol).Select

Exit Sub

End If

For i = startRow To lastRow Step 1

If Cells(i, copyQuantityTargetCol).Value = "" And Rows(i).Hidden = False Then

Cells(i, copyQuantityTargetCol).Value = Cells(inventoryQuantityRow, inventoryQuantityCol)

ElseIf Cells(i, copyQuantityTargetCol).Value <> "" And Rows(i).Hidden = False Then

MsgBox duplicateMessage

Exit Sub

End If

Next

enterFlg = True

'棚卸数量入力(2回目)

ElseIf activeRow = inventoryQuantityRow And activeCol = inventoryQuantityCol Then

For i = startRow To lastRow Step 1

Rows(i).Hidden = False

Next

Cells(inventoryQuantityRow, inventoryQuantityCol) = ""

Cells(searchValueRow, searchValueCol).Select

enterFlg = False

Else

Cells(activeRow + 1, activeCol).Select

Exit Sub

End If

End Sub

Sub Auto_Open()

'「実地棚卸」シートがアクティブになったら「AutoActivateSheet_Name」マクロ実行

Worksheets("実地棚卸").OnSheetActivate = "AutoActivateSheet_Name"

'「実地棚卸」シート以外がアクティブになったら「AutoDeactivateSheet_Name」マクロ実行

Worksheets("実地棚卸").OnSheetDeactivate = "AutoDeactivateSheet_Name"

End Sub

Sub AutoActivateSheet_Name()

'Enterを押すと「SearchGoods_InputInventoryQuantity」マクロ実行

Application.OnKey "~", "SearchGoods_InputInventoryQuantity"

Application.OnKey "{Enter}", "SearchGoods_InputInventoryQuantity"

End Sub

Sub AutoDeactivateSheet_Name()

'テンキーのEnterへの割り当て解除

Application.OnKey "{Enter}"

'大きいEnterへの割り当て解除

Application.OnKey "~"

End Sub

【Excel】セルに名前を付けてハイパーリンクを設定する

名前の定義によってセルに名前を付け、その名前に対してハイパーリンクを設定する方法です。
座標を指定したハイパーリンクとは異なり、対象セルの行や列が変動した場合も影響を受けずにリンクする事が可能です。

【前提】「2018」シートから「基本情報」シートへリンクする

①セルに名前を付ける

②名前を指定したハイパーリンクを設定