exsel vba メモ

 'ブックを非表示に設定
Windows(ThisWorkbook.name).Visible = False

'ブックを表示に設定
Windows(ThisWorkbook.name).Visible = True

'ユーザーフォームを最上位に表示する記述一式
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hWnd As LongPtr, ByVal hWndInsertAfter As LongPtr, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST As Long = -1
Const SWP_NOSIZE As Long = 1
Const SWP_NOMOVE As Long = 2

’電子印鑑作成マクロ オートシェイプを写真に変換して貼り付けるサンプル
Sub 電子印鑑作成()
    'シェイプの日付テキストボックスを選択
    ActiveSheet.Shapes.Range(Array("TextBox 2")).Select
    '年月日を取得して変更
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = Cells(2, 3).Text
    Cells(3, 3).Select
    'シェイプをコピー
    ActiveSheet.Shapes.Range(Array("Group 1")).Select
    Selection.Copy
    'セルを選択
    Range("B6").Select
    '写真で貼り付け
    ActiveSheet.Pictures.Paste.Select
    'コピーを保持
    Selection.Copy
End Sub

'アクティブブックの名前を取得
Sub getactivebookname(ByRef activebookname As String)
    activebookname = Excel.Application.ActiveWorkbook.name
    Debug.Print (activebookname)
End Sub

'workbookを取得
Sub getbookobject(ByRef bookobject As Workbook)
    Set bookobject = ActiveWorkbook
    Debug.Print (bookobject.name)
End Sub

'選択行を削除するマクロ
Sub 行削除()

    '選択位置のレンジを取得
    Dim c As Range
    Set c = Selection
    Debug.Print (c.Row)
    Debug.Print (c.Column)
    
    'セル選択用の位置を取得
    Dim ro As Integer
    Dim co As Integer
    ro = c.Row
    co = c.Column
    
    '選択した行数を取得
    Dim ronum As Integer
    ronum = c.Rows.count
    
    '削除する前に安全のためシートをコピー
    Sheets("Sheet1").Select
    Sheets("Sheet1").Copy After:=Sheets(1)
    Sheets("Sheet1").Select
    
    '行を選択して削除
    Range(Rows(ro), Rows(ro + ronum - 1)).Select
    Selection.Delete Shift:=xlUp

    '選択していたセルを選択
    Cells(ro, co).Select

End Sub


'選択した行数の範囲を挿入するマクロ
Sub 行追加()

    '選択位置のレンジを取得
    Dim c As Range
    Set c = Selection
    Debug.Print (c.Row)
    Debug.Print (c.Column)
    
    'セル選択用の位置を取得
    Dim ro As Integer
    Dim co As Integer
    ro = c.Row
    co = c.Column
    
    '選択した行数を取得
    Dim ronum As Integer
    ronum = c.Rows.count
    
    '行を追加
    Range(Rows(ro), Rows(ro + ronum - 1)).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    
    '選択していたセルを選択
    Cells(ro, co).Select

End Sub

’名前定義を削除するマクロ
Sub 名前の削除()
'すべての名前を表示して削除する
  Dim name As Object
    For Each name In Names
        If name.Visible = False Then
            name.Visible = True
            name.Delete
        End If
    Next
    'MsgBox "すべての名前の定義を表示しました。", vbOKOnly
End Sub




















コメント