SSブログ
Excel2000 VBA独習 ブログトップ
前の16件 | 次の16件

シートの数式の有るセルに色をつけ灰色罫線を引くと削除する実験 Excel2000 VBA [Excel2000 VBA独習]

シートの数式の有るセルに色をつけ灰色罫線を引くと削除する実験 Excel2000 VBA

Sub 数式に色()
'シート全体の数式の有るセルに背景色設定する
  With Cells 'シート全体
 
    On Error Resume Next
    .SpecialCells(xlCellTypeFormulas).Interior.Color = RGB(255, 244, 74)
    .SpecialCells(xlCellTypeFormulas).Borders.Color = RGB(200, 200, 200)
  End With
End Sub

    
Sub 数式にある色を消す2()
'シート全体の数式に設定した背景色と罫線を無効にする
    Cells.SpecialCells(xlCellTypeFormulas).Select
    Selection.Interior.ColorIndex = xlNone
    Selection.Borders.LineStyle = False
    
End Sub


タグ:Excel2000 VBA

選択セルの背景色を調べてMsgBoxに表示する実験 Excel2000 VBA [Excel2000 VBA独習]

選択セルの背景色を調べてMsgBoxに表示する実験 Excel2000 VBA

 excelVBA_BGcolor.jpg

Sub 選択セルの背景色を調べる()
Dim bgRGB, myR, myG, myB, bgColorI As Long

'アクティブセルの背景色を調べる
    bgRGB = ActiveCell.Interior.Color

'アクティブセルの背景色番号を調べる
    bgColorI = ActiveCell.Interior.ColorIndex
   
'RGBの値を求める
    myR = bgRGB Mod 256
    myG = Int(bgRGB / 256) Mod 256
    myB = Int(bgRGB / 256 / 256)
   
'メッセージボックスに表示
MsgBox "選択セルの背景色のカラー番号は " & bgColorI _
& vbLf + vbLf & "選択セルの背景色は " & bgRGB & vbLf + vbLf & _
"選択セルの背景色RGBは " & "RGB(" & myR & "," & myG & "," & myB & ")"


End Sub
 


タグ:Excel2000 VBA

セルに付けた名前を利用してエンターキーを押した時の移動方向を決める実験 Excell2000 VBA [Excel2000 VBA独習]

セルに付けた名前を利用してエンターキーを押した時の移動方向を決める実験

excelVBA_idou_name.jpg

動作は下の動画を参照

 

セルに表示されている値がセルに付けた名前(名前は重複しないように、名前を変更する時は削除してから再設定)

セルに名前を付けるマクロ
Sub 選択範囲に名前を付ける()
Dim myName As String
Dim myR As Range
Dim i As Long
myName = InputBox("名前 始めの文字に必ず「右」「下」「移」をつける。")

For Each myR In Selection
    i = i + 1               '名前がダブらないように番号を付加
    myR.Name = myName & i   'セルに名前設定
    myR = myName & i        'セルの値を設定(分かりやすくする為)
Next

End Sub

セルにつけた名前一覧を表示(どこかのサイトからコピー)
Sub ListAllNames()
  Dim i As Integer

  With ActiveWorkbook
    For i = 1 To .Names.count
      ActiveCell.Offset(i - 1, 0).Value = .Names(i).Name
      ActiveCell.Offset(i - 1, 1).Value = .Names(i)
    Next
  End With
  ActiveCell.EntireColumn.AutoFit
End Sub

セルの名前を調べる(名前が設定されていない時はエラーが発生)
複数のセルに同時に付けた名前のセルからは、このマクロでは名前の取得できない
Sub セルの名前を調べる()
On Error GoTo Er
MsgBox ActiveCell.Name.Name
Exit Sub
Er:
MsgBox "名前が設定されていません"

End Sub

ワークシートに設定するマクロ(シート名を右クリックして「コードの表示」をクリック)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cellName As String
Application.MoveAfterReturn = False '通常はセルの移動なし
On Error GoTo Er                    '名前が設定されてなければエラー
cellName = Left(ActiveCell.Name.Name, 1)  '名前の始めの一文字(右、下、移)
'Debug.Print cellName
'名前が右ならエンターキーを押して右移動
    If cellName = "右" Then Application.MoveAfterReturn = True: Application.MoveAfterReturnDirection = xlToRight: Exit Sub
'名前が下ならエンターキーを押して下移動
    If cellName = "下" Then Application.MoveAfterReturn = True: Application.MoveAfterReturnDirection = xlDown: Exit Sub
'名前が移なら下に1左に4移動
    If cellName = "移" Then Selection.Offset(1, -4).Select: Exit Sub
Exit Sub
Er:
Application.MoveAfterReturn = False
End Sub


タグ:Excel2000 VBA

ワークシートイベントの有効無効と数式保護風   Excel2000 VBA [Excel2000 VBA独習]

ワークシートイベントの有効無効

ワークシートイベントでイベントを無効にして編集、有効にしてワークシートイベントを有効にする。

Sub シートイベント有効無効()
’実行する度に有効→無効→有効
If Application.EnableEvents = False Then Application.EnableEvents = True Else Application.EnableEvents = False
End Sub

数式のあるセルを選択できなくする(数式保護)数式を選択すると右のセルに移動する。
VBEで保護したいシートを選択し(ダブルクリック)コードウインドウに記述
追記 セル結合に数式がある場合下のコードでは選択できてしまうので、If Selection.MergeCells Then ActiveCell.Offset(0, 1).Selectを追記すれば選択出来なくなる。(弊害もあるけど)
シートを作る時に、記入が必要なセルはセル結合しない設計が必要

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.HasFormula = True Then ActiveCell.Offset(0, 1).Select
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.HasFormula = True Then ActiveCell.Offset(0, 1).Select
If Selection.MergeCells Then ActiveCell.Offset(0, 1).Select
End Sub


数式のあるセルに罫線を引く

Sub 数式セルに罫線()
'
'inputboxで選択した範囲を調べ数式が設定されていれば罫線を引く
'
On Error GoTo Er  'inputboxでキャンセルボタンが押された時の処理のつもり

Dim myR, hani As Range

'InputBoxで選択範囲を取得
   Set hani = Application.InputBox(Title:="数式のるセルに色つける", prompt:="範囲を選択してください!", Type:=8)

'選択範囲の数式のあるセルに罫線を引く
    For Each myR In hani
        If Left(myR.Formula, 1) = "=" Then
        With myR.Borders
        .Color = RGB(100, 100, 255)
        .LineStyle = xlContinuous
        .Weight = xlThin           '標準 xlMedium(太線)
        End With
    End If
       
    Next myR
Er:
    Set hani = Nothing
End Sub


タグ:Excel2000 VBA

Excel2000 VBA バッチファイルを実行する実験 [Excel2000 VBA独習]

Excel2000 VBA  バッチファイルを実行する実験

C:\Documents and Settings\FMV6000NU\Application Data\Microsoft\Excel フォルダをコピー(XCOPY)するバッチを作成し
バッチファイルをマクロで実行する実験(Excel.xlb と XLSTARTフォルダ内のファイル PERSONAL.xls など)

バッチファイルの作成
テキストエディター(メモ帳)を開き 
xcopy "C:\Documents and Settings\FMV6000NU\Application Data\Microsoft\Excel"  "D:\bk\office\Excelバックアップ\VBA" /s/y (xcopy 保存元 保存先 オプション)
のように記述し、ファイル名.bat で保存する

 Sub BAT_2()
'batファイルを実行する(拡張子の関連付けで開く)
'xcopy "C:\Documents and Settings\FMV6000NU\Application Data\Microsoft\Excel"
'"D:\bk\office\Excelバックアップ\VBA" /s/y
' /Y  受け側の既存のファイルを上書きする前に確認のメッセージを表示しません。
' /S  空の場合を除いて、ディレクトリとサブディレクトリをコピーします。
   
    Dim WSH
    Set WSH = CreateObject("Wscript.Shell")
    WSH.Run "d:\bk\office\excel.bat" 'バッチファイル指定
    Set WSH = Nothing
End Sub

以下のコードでは巧くいかなかった失敗例 

Sub BAT()
Dim mybat As String
mybat = "d:\bk\office\excel.bat"
Shell "C:\WINNT\system32\cmd.exe " & mybat  ', vbNormalFocus
End Sub

 


Sub メモ帳起動()
'メモ帳起動
    Shell "C:\WINNT\system32\notepad.exe "
End Sub

Excel2000 VBA 範囲指定した範囲のみに入力出来るようにする実験 [Excel2000 VBA独習]

Excel2000 VBA 範囲指定した範囲のみに入力出来るようにする実験

 ExcelVBA_Cell_Idou_3.jpg

数式が設定されているセルは選択できない。

Sub 選択範囲のみ入力出来るようする()
'原理
'シートの利用範囲を調べて、数式のあるセルを除いて数式化する
'選択範囲をInputBoxに入力し、範囲をNull化する
'シートのイベントで選択セルが数式なら右に移動する(シートイベント)
'つまりセルが数式なら選択出来ないようにする

Dim xRang, hani As Range

'シートの利用範囲を調べる
'ActiveSheet.UsedRange
    For Each xRang In ActiveSheet.UsedRange
        If InStr(xRang.Formula, "=") = 1 Then GoTo nextR
        '数式化 test → =("test")  null?(空白)は スペースに =(" ")
            If xRang = "" Then
                xRang = "=(" & Chr(34) & " " & Chr(34) & ")"
            Else
                xRang = "=(" & Chr(34) & xRang.Value & Chr(34) & ")"
         End If
nextR:
Next xRang

'入力を許可する範囲を設定(複数選択可)
    Set hani = Application.InputBox("入力を許可する範囲を選択してください。", Type:=8)

'範囲をNullに
    For Each xRang In hani
        xRang.Value = "入力可"
    Next
Set hani = Nothing
'--------------------------------------------------------------
'以下のコードをシート名を右クリックし「コードの表示」を押して記入
'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'If Target.HasFormula = True Then ActiveCell.Offset(0, 1).Select
'End Sub
'--------------------------------------------------------------
'MsgBox
    MsgBox "終了しました。"

End Sub


タグ:Excel2000 VBA

Excel2000 VBA エンターキーを押してセルを設定した方向に移動選択する実験 [Excel2000 VBA独習]

Excel2000 VBA  エンターキーを押してセルを設定した方向に移動選択する実験

ExcelVBA_Cell_idou1.jpg

エンターキーを押して、セルをマクロで設定した方向に移動する
入力はできるが、出来ない作業もある(貼り付け)、いろいろ試さないと分からないけれど
A12に移動セルでは入力できない(選択できない)

A12など編集するには、シート名の所で右クリックして「コードの表示」を押し、VBEに移動するのでVBEのコードがウインドウでコード部分を選択して、コメント化(コメントブロックボタンで実行)する。
作業が終わったら、コメント化した部分を非コメントにする。

 ExcelVBA_Cell_idou_comment.jpg

シート 名の所で右クリックし、「コード表示」をおしてVBEに移動、下記のコード記入

 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

'通常は下移動
  Application.MoveAfterReturn = True
  Application.MoveAfterReturnDirection = xlDown
'A10:E10の範囲ではエンターキーを押して右移動
  If Not Application.Intersect(ActiveCell, Range("A10:E10")) Is Nothing Then
  Application.MoveAfterReturnDirection = xlToRight
  End If
'F10:F12ではエンターキーを押して下移動
  If Not Application.Intersect(ActiveCell, Range("F10:F12")) Is Nothing Then
    Application.MoveAfterReturn = xlDown
  End If
'B2:F9範囲ではエンターキーを押しての移動無効
  If Not Application.Intersect(ActiveCell, Range("B2:F9")) Is Nothing Then
    Application.MoveAfterReturn = False
  End If
'F12が選択されたらA12を選択(移動)
    If Not Application.Intersect(ActiveCell, Range("F12")) Is Nothing Then
        Range("A12").Select
    End If
'A14が選択されたらD14を選択(移動)
    If Not Application.Intersect(ActiveCell, Range("A14")) Is Nothing Then
        Range("D14").Select
    End If
End Sub

 


数式が設定されてるセルは選択できない(右に移動)と設定方向に移動の組合せの実験

 

A2セルは「 =("商品名")  」のように文字列だけど数式にする、他の文字列も同様に数式にする。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

'数式が設定されているセルは選択できない(選択したら右に移動)
    If Target.HasFormula = True Then ActiveCell.Offset(0, 1).Select

'移動方向設定
    If Not Application.Intersect(ActiveCell, Range("B3:C5")) Is Nothing Then
        Application.MoveAfterReturn = True
        Application.MoveAfterReturnDirection = xlToRight
    ElseIf Not Application.Intersect(ActiveCell, Range("E2:K6")) Is Nothing Then
        Selection.Offset(1, -3).Select
    Else
        Application.MoveAfterReturn = False
    End If

End Sub


選択範囲の文字列を数式化(選択できなくする為)

 

Sub セルの値を数式化()
'例 A1 TEST → =("TEST")

Dim xRan As Range

For Each xRan In Selection
'数式が設定されていればスキップ
    'Debug.Print xRan.Formula, InStr(xRan.Formula, "=")
   
    If InStr(xRan.Formula, "=") = 1 Then GoTo nextR
        '数式化
        xRan = "=(" & Chr(34) & xRan.Value & Chr(34) & ")"
nextR:
Next xRan

End Sub

 

 

 

 


タグ:Excel2000 VBA

Excel2000 VBA 数式の有るセルを選択出来ないようにする [Excel2000 VBA独習]

Excel2000 VBA 数式の有るセルを選択出来ないようにする

ネタ元は ttp://www.excel.studio-kazu.jp/mag2/backnumber/mm20040727.html 

シートの保護とか、いろいろ試してきたけど、やっと目的の物が見つかった・・・・よかった!

excelVBA_susiki_01.jpg

excelVBA_susiki_02.jpg

 

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 '数式の有るセルを選択したら右に移動(数式セルは選択できない)
 'シートにこのマクロを設定
 'シート名を右クリック「コードの表示」
 'ttp://www.excel.studio-kazu.jp/mag2/backnumber/mm20040727.html
 
    If Target.HasFormula = True Then   ' Targetに数式があれば

        ActiveCell.Offset(0, 1).Select ' ActiveCellの一つ右へ

    End If

End Sub

 

 


選択範囲の文字列を数式化(選択できなくする為)

 

Sub セルの値を数式化()
'例 A1 TEST → =("TEST")

Dim xRan As Range

For Each xRan In Selection
'数式が設定されていればスキップ
    'Debug.Print xRan.Formula, InStr(xRan.Formula, "=")
   
    If InStr(xRan.Formula, "=") = 1 Then GoTo nextR
        '数式化
        xRan = "=(" & Chr(34) & xRan.Value & Chr(34) & ")"
nextR:
Next xRan

End Sub
 

 


Excel2000 VBA 上書き保存と世代バックアップ の実験 [Excel2000 VBA独習]

Excel2000 VBA 上書き保存と世代バックアップ の実験

マクロで上書き保存と世代バックアップ保存を同時に実行する
世代バックアップファイルには先頭に日時を挿入したファイル名にする

課題 パスワードが設定されているファイルだとエラーになるので?回避方法 

Sub 上書き保存とバックアップ保存()
    '自分用バックアップフォルダとカレントフォルダに保存
    'バックアップ用フォルダにはファイル名の先頭に日時の文字を追加する
    '世代間バックアップ風 例(2011-8-25 木 15-01-15.test.xls)
    '
Dim file_name, sub_name As String
Dim file_1, file_2 As String

On Error GoTo Er
   
'上書き保存の確認ダイアログを表示させない
    Application.DisplayAlerts = False
   
'アクティブブックのファイル名を取得
    file_name = ActiveWorkbook.Name
   
'上書き保存とバックアップフォルダに同名で保存
    ActiveWorkbook.SaveAs fileName:="D:\bk\office\Excelバックアップ\" & file_name
    ActiveWorkbook.SaveAs fileName:="D:\bk\office\" & file_name
   
'バックアップフォルダに保存したファイル名を変える(実験を兼ねて)
   file_1 = "D:\bk\office\Excelバックアップ\" & file_name
   
    '日時をファイル名の先頭につける
    sub_name = Replace(Now, "/", "-")
    sub_name = Replace(sub_name, ":", "-")
    sub_name = Replace(sub_name, "(", "")
    sub_name = Replace(sub_name, ")", "")
   
    file_2 = "D:\bk\office\Excelバックアップ\" & sub_name & "." & file_name
    'フィル名の変更
    Name file_1 As file_2
    
'ダイアログを表示するようにする
    Application.DisplayAlerts = True

'---------保存の確認用-------------------------------------------
   
'Excelバックアップ フォルダを開く
'  Dim myFolder As String
 
'フォルダの設定
    'myFolder = ThisWorkbook.Path
'   myFolder = "D:\bk\office\Excelバックアップ"

'エクスプローラの起動(Windows2000 C:\WINNT WindowsXP C:\Windows)
'   Shell "C:\WINNT\Explorer.exe " & myFolder, vbNormalFocus
'----------------------------------------------------------------
'終了
    Exit Sub
'エラー処理(パスワードの有るブックファイルはエラーになる?エラーの回避方法がわからん)
Er:
    MsgBox "エラー番号 " & Err.Number & vbCrLf + vbCrLf & Err.Description

End Sub


バックアップファイルの削除 実験

Sub バックアップファイル削除3()
'
'ファイルを削除 確認メッセージあり
'7日以上前のファイルを削除する
'
Dim buf, file_name, file_date, MB As String
Dim cnt As Long
Const Path As String = "d:\bk\office\Excelバックアップ\"
    buf = Dir(Path & "*.xls")
    Do While buf <> ""
        file_name = buf
        file_date = FileDateTime(Path & buf)
        'Debug.Print DateDiff("d", file_date, Now)
        'ファイルが7日以上前なら削除
            If DateDiff("d", file_date, Now) > 7 Then
            MB = MsgBox(file_name & "削除しますか?", vbYesNo)
      
            Select Case MB
                Case vbYes
                    Kill Path & file_name
                Case vbNo
              
            End Select
            End If
        buf = Dir()
    Loop
    MsgBox "該当する削除対象ファイルが有りません。" & vbCrLf & "終了します。"
End Sub


Sub バックアップファイル削除()
'
'ファイルを削除するので動作テストをする事
'7日以上前のファイルを削除する
'
Dim buf, file_name, file_date As String
Dim cnt, re As Long
Dim SH As SHFILEOPSTRUCT
Const Path As String = "d:\bk\office\Excelバックアップ\"
    buf = Dir(Path & "*.xls")
    Do While buf <> ""
        cnt = cnt + 1
        file_name = buf
        file_date = FileDateTime(Path & buf)
        'Debug.Print DateDiff("d", d, Now)
        'ファイルが7日以上前なら削除
        If DateDiff("d", file_date, Now) > -1 Then
        With SH
        '.hwnd = Application.hwnd
        .wFunc = FO_DELETE
        .pFrom = Path & buf
        .fFlags = FOF_ALLOWUNDO
    End With
        re = SHFileOperation(SH)
    If re <> 0 Then MsgBox "削除に失敗しました", vbExclamation
        End If
        buf = Dir()
    Loop
End Sub


タグ:Excel2000 VBA

Excel2000 VBA エクスプローラを起動する 実験 [Excel2000 VBA独習]

Excel2000 VBA  エクスプローラを起動する 実験

Sub フォルダを開く()
'
'
Dim myFolder As String
'フォルダの設定
    'myFolder = ThisWorkbook.Path
    myFolder = "D:\bk\office\Excelバックアップ"
'エクスプローラの起動(Windows2000 C:\WINNT WindowsXP C:\Windows)
    Shell "C:\WINNT\Explorer.exe " & myFolder, vbNormalFocus
   
End Sub


タグ:Excel2000 VBA

Excel2000 VBA セルの値によって右側に矢印アイコンを表示する実験 [Excel2000 VBA独習]

Excel2000 VBA  セルの値によって右側に矢印アイコンを表示する実験

excelVBA_yajirusi.jpg

Sub test2()
'数値を調べてゼロ以上なら↑アイコンを表示
'
Dim xRange As Range
'選択範囲から1つずつセルを調べる
For Each xRange In Selection

    If xRange > 0 Then
        xRange.Offset(0, 1).Activate
        Call face(38)
    End If
    
    If xRange = 0 Then
        xRange.Offset(0, 1).Activate
        Call face(39)
    End If
    
    If xRange < 0 Then
        xRange.Offset(0, 1).Activate
        Call face(40)
    End If
Next xRange

End Sub
    

Function face(num As Integer)
'face(num)で受け取ったFaceIDをセルに表示
'
Dim myCB As Variant

'コマンドバーの作成と表示
    Set myCB = CommandBars.Add(Name:="FaceID")
    myCB.Visible = True
'Face(アイコン)の設定とコピー
    With myCB.Controls.Add
        .FaceId = num
        .CopyFace
    End With
'シートに貼り付け
    'ActiveSheet.Select
    ActiveSheet.PasteSpecial Format:="ビットマップ", Link:=False, DisplayAsIcon:=False
'作成したコマンドバーの削除
    myCB.Delete
    Set myCB = Nothing
End Function


タグ:Excel2000 VBA

Excel2000 VBA セルの数式をコメント欄に表示するの実験 [Excel2000 VBA独習]

Excel2000 VBA  セルの数式をコメント欄に表示するの実験

 excelVBA_comment.jpg

Sub コメント欄にセルの数式を表示()
'
'実験なので、対象は選択セルのみ
'
Dim ComTxt, FormulaTxt  As String

    ActiveCell.Select
   
'数式の文字列
    FormulaTxt = "セルの数式" & Chr(10) & ActiveCell.Formula
   
'数式が設定されてなければ終了
    If FormulaTxtActiveCell.Formula = "" Then MsgBox "数式が設定されてません。": Exit Sub
   
'選択セルにコメントが設定されているか調べて、設定されていれば
'コメントに数式文字列を追加する
       
    If TypeName(ActiveCell.Comment) = "Comment" Then
        ComTxt = ActiveCell.Comment.Text    '現在のコメントテキスト
        'コメント設定
        ActiveCell.Comment.Text Text:=ComTxt & Chr(10) + Chr(10) & FormulaTxt
    Else
        '新たにコメント作成
        With ActiveCell.AddComment
            .Text FormulaTxt
            '.Visible = True
        End With
    End If
   
End Sub

 


 

選択範囲の数式をコメント欄に記入

Sub コメント欄にセルの数式を表示2()
'
'事前にドラッグしてセル範囲を選択する
'
Dim ComTxt, FormulaTxt  As String
Dim contR  As Range

'選択範囲
    For Each contR In Selection
        contR.Activate
 
'数式の文字列
    FormulaTxt = "セルの数式" & Chr(10) & ActiveCell.Formula
   
'数式が設定されてなければ次
    If ActiveCell.Formula = "" Then GoTo next_each
   
'選択セルにコメントが設定されているか調べて、設定されていれば
'コメントに数式文字列を追加する
       
    If TypeName(ActiveCell.Comment) = "Comment" Then
        ComTxt = ActiveCell.Comment.Text    '現在のコメントテキスト
        'コメントに同じ数式があれば書き足さない
        If InStr(ComTxt, ActiveCell.Formula) > 1 Then GoTo next_each
        'コメント設定
        ActiveCell.Comment.Text Text:=ComTxt & Chr(10) & FormulaTxt
    Else
        '新たにコメント作成
        With ActiveCell.AddComment
            .Text FormulaTxt
            '.Visible = True
        End With
    End If
next_each:
    Next contR
 
End Sub

 


タグ:Excel2000 VBA

Excel2000 VBA アクティブシートのグラフ数とグラフ名を調べる 実験 [Excel2000 VBA独習]

Excel2000 VBA  アクティブシートのグラフ数とグラフ名を調べる 実験

 excelVBA_chart.jpg

Sub チャートの数と名前()
'アクティブシートのグラフ数と名前
'ttp://www.moug.net/tech/exvba/0020001.htm
Dim intChart, i As Integer
Dim CharName(), strMB As String

'アクティブシートのChartObjects数
    intChart = ActiveSheet.ChartObjects.count
   
'配列の個数設定
    ReDim CharName(intChart)

   
'ChartObjects名取得
    For i = 1 To intChart
       CharName(i) = ActiveSheet.ChartObjects(i).Name
    Next i
   
'MSGBOXに表示
    '表示用文字列を作成
    For i = 1 To intChart
        strMB = strMB & CharName(i) & vbCrLf + vbCrLf
    Next i
       MsgBox "シート名= " & ActiveSheet.Name & vbCrLf & "グラフ数= " & intChart & vbCrLf + vbCrLf & "==  グラフ名  ==" & vbCrLf & vbCrLf & strMB 
End Sub

 


Sub 縦線の表示非表示()
Dim GraLine_V As Object
'開いているシートのグラフをアクティブにする
    ActiveSheet.ChartObjects("Chart 1").Activate
    
'グラフのx項目目盛線(主縦線)が表示されていれば非表示でなければ表示する
    Set GraLine_V = ActiveChart.Axes(xlCategory)
    
    If GraLine_V.HasMajorGridlines = True Then
        GraLine_V.HasMajorGridlines = False
        Else:
        GraLine_V.HasMajorGridlines = True
    End If
    
    Set GraLine_V = Nothing
    
End Sub

マクロの記録でグラフオプションの目盛線を設定して作成されたコード部分

  With ActiveChart.Axes(xlCategory)
        .HasMajorGridlines = True   '主縦線
        .HasMinorGridlines = False   '副縦線
    End With
  With ActiveChart.Axes(xlValue)
        .HasMajorGridlines = True  '主横線
        .HasMinorGridlines = False  '副横線
    End With

グラフの名前設定
Sub chartNmae()
'ChartObjectの名前を設定する
'
On Error GoTo Er    '該当するchartが無ければ
'名前設定
    ActiveSheet.ChartObjects("AAA").name = "chrat 1"
    '==   ActiveSheet.ChartObjects(番号か"名前").name = "名前"  ==
    Exit Sub
Er:
    MsgBox "該当するChartObjectが有りません。"
End Sub

 

 

 


タグ:Excel2000 VBA

Excel2000 VBA Face(アイコン)の番号を指定してセルに表示する実験 [Excel2000 VBA独習]

Excel2000 VBA  Face(アイコン)の番号を指定してセルに表示する実験

Face番号一覧は、http://telstar.blog.so-net.ne.jp/2011-08-14 の記事参照

 excelVBA_FaceID_INBOX.jpg

Sub FaceID番号を指定してセルに表示()
'
'inputboxにFaxeID番号を入力し、セルに表示する
'

Dim NoFID As Integer
Dim myCB As CommandBar

'エラーが発生したら
    On Error GoTo Er
'inputboxでFaceID番号取得(1-3518)
    NoFID = Application.InputBox("FaceID番号を入力してください。(1-3518)", Type:=1)
        '取得FaceID番号が1-3518の範囲外なら終了
        If NoFID < 1 Or NoFID > 3518 Then
        MsgBox "FaceIDの番号が(1-3518)の範囲外です。" & vbCrLf + vbCrLf & "終了します。"
        Exit Sub
        End If
'コマンドバーの作成と表示
    Set myCB = CommandBars.Add(Name:="FaceID")
    myCB.Visible = True
'Face(アイコン)の設定とコピー
    With myCB.Controls.Add
        .FaceId = NoFID
        .CopyFace
    End With
'シートに貼り付け
    'ActiveSheet.Select
    ActiveSheet.PasteSpecial Format:="ビットマップ", Link:=False, DisplayAsIcon:=False
    GoTo M_End
'エラー処理らしきもの
Er:
    MsgBox "シートに貼り付け出来ませんでした。" & vbCrLf + vbCrLf & "Ctrl+Vで貼り付けてください。"
'終了処理
M_End:
    '作成したコマンドバーの削除
    myCB.Delete
    Set myCB = Nothing

End Sub

 

 


タグ:Excel2000 VBA

Excel2000 VBA URLを既定のブラウザで開く [Excel2000 VBA独習]

Excel2000 VBA  URLを既定のブラウザで開く

利用方法
いつも利用するVBAの解説サイトURLを設定しマクロボタンに割り当てる(Myヘルプみたいな感じ)
マクロボタンにハイパーリンクを設定すれば同じなんですけど・・・・

 Sub openURL()
'Windows Scripting Hostを利用する
'既定のブラウザでURLを開く
'参考サイト ttp://officetanaka.net/excel/vba/tips/tips42.htm
    Dim WSH
    Dim URL As String
    Set WSH = CreateObject("Wscript.Shell")

    URL = "http://technet.microsoft.com/ja-jp/library/cc985270.aspx"
    WSH.Run URL, 3
    Set WSH = Nothing
End Sub


タグ:Excel2000 VBA

Excel2000 VBA エンターキーを押して右、下移動、無効、マクロ用コマンドバー作成 [Excel2000 VBA独習]

Excel2000 VBA  エンターキーを押して右、下、無効、マクロ用コマンドバー作成

 excel_cursor_move.jpg

マクロを実行して作成されたコマンドバーをツールバーにドラッグ&ドロップする。

Sub コマンドバーカーソル移動作成()
'コマンドバーを作成して
'エンターキーを押して下移動、右移動、移動なしのマクロボタンを追加作成
'コマンドバーをツールバーのドラッグ&ドロップする

Dim Mname As String
Dim barName As Variant
Dim myBar As CommandBar

'--- コマンドバーを作成(コマンドバー名=カーソル移動) ---
    Mname = "カーソル移動"
'ツールバーに「カーソル移動」が有るか調べ無ければ作成
    For Each barName In CommandBars
        'Debug.Print barName.Name
        If barName.Name = Mname Then barName.Delete  '"カーソル移動"を削除する
    Next
'新しいコマンドバーを作成
    Set myBar = CommandBars.Add(Name:=Mname)
    myBar.Visible = True
'オリジナルのコマンド作成
        With myBar.Controls.Add
     .Caption = "右移動"
           .FaceId = 39
            .OnAction = "cursor_right"  'エンターキーを押して右移動
        End With
        With myBar.Controls.Add
           .Caption = "下移動"
     .FaceId = 40
            .OnAction = "cursor_down"    'エンターキーを押して下移動
        End With
        With myBar.Controls.Add
            .Caption = "移動なし"
            .FaceId = 330
            .OnAction = "move_after_false"  '移動なし
        End With
       
 '        With myBar.Controls.Add
 '            .FaceId =
 '            .OnAction = ""  '追加用
 '        End With
       
 '        With myBar.Controls.Add
 '            .FaceId =
 '            .OnAction = ""  '追加用
 '        End With

    Set myBar = Nothing
End Sub



Sub cursor_right()
'
' enter で右移動
'
'エンターキーを押して右移動


    Application.MoveAfterReturn = True
    Application.MoveAfterReturnDirection = xlToRight
  
   
End Sub



Sub cursor_down()
'
' enter で下移動
'
'エンターキーを押して下移動

    Application.MoveAfterReturn = True
    Application.MoveAfterReturnDirection = xlDown
  
End Sub



Sub move_after_false()
'
' enter で移動無効
'
'エンターキーを押して移動を無効

    Application.MoveAfterReturn = False
   
End Sub

 


タグ:Excel2000 VBA
前の16件 | 次の16件 Excel2000 VBA独習 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。