• 締切済み

CapsLockを特定の部分だけオンにする

EXCELのシートで特定のシートだけ、セルだけCapsLockをオンにするということはできますか? それ以外のセルやシートなどではCapsLockをオフにするということはできますか?

みんなの回答

回答No.5

#1 マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。 ---使いたくない意味が分かりません。 セキュリティレベルを下げるのも少し不安に感じています。 ---何が不安なのかが分かりません。 マクロでしか制御できませんよ。 もし、小文字を大文字にしたいだけなら、 別セルに入力し、表示したいセルに UPPER関数で大文字にしたら如何ですか。 (アルファベットの問題だけですよね?) A1に大文字で表示したい場合 で、入力をZ1にするとき A1に =upper(z1) と入力し、 A1には、CapsLock offで入力

am20
質問者

お礼

たびたびありがとうございます。 マクロをもう少し勉強しないとダメなようですね。 初心者には無理な課題だったようです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>やはりマクロを使うしかないのでしょうか? >できればマクロを使いたくないので。。。 >マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。 私の知る範囲では、VBAを使う以外には、方法はないと思います。 Officeのバージョンがいくつかは分かりませんが、「セキュリティの警告」が出る出ないというのは、あまり意味がないと思います。そのVBAが問題を起こすか起こさないかは、本来は、そのコードの内容の問題で、「警告」が出たから、問題だということではありません。それに、ダイヤログを出さない方法もいくつか用意されています。一応、セキュリティ「中」で出さないレベルに収めるなら、「個人認証」という方法があります。 悪意のあるコードなのか、そうでないのかは、VBAがある程度読める人でなければ分かりません。悪意のないコードでも、問題が発生することがあります。Officeで、VBAを使わなくて済むなら、それに越したことはありません。Officeのバージョンやその注意書きを確認し、作者不明のVBAに手を出さなければ、ふつうは問題ないはずなのです。もし、心配ならアンチウィルスで、Officeをプロテクトするのが良いのであって、「セキュリティの警告」は、単なるマクロ付きだという「警告」であって、それは何の阻止にもなりません。それに、プログラムに詳しい人が、その気になれば、そのような警告を出さないようにすることは、簡単なことだからです。 VBAをもう少し勉強なさってください。

am20
質問者

お礼

アドバイスありがとうございます。 私自身マクロについては初心者なものですから、このような質問が出てきたのかもしれません。 もう少し勉強します。。。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

API関数は、間違って使うと、ハングしますので、注意してお使いください。 これは、シートモジュールに設置してください。 参考: http://support.microsoft.com/kb/177674/ja 'Declare Type for Calling API Private Type OSVERSIONINFO   dwOSVersionInfoSize As Long   dwMajorVersion As Long   dwMinorVersion As Long   dwBuildNumber As Long   dwPlatformId As Long   szCSDVersion As String * 128 End Type   'Win32 API Declare   Private Declare Function GetVersionEx Lib "kernel32" _       Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long   Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _       ByVal bScan As Byte, _       ByVal dwFlags As Long, _       ByVal dwExtraInfo As Long)   Private Declare Function GetKeyboardState Lib "user32" _       (pbKeyState As Byte) As Long   Private Declare Function SetKeyboardState Lib "user32" _       (lppbKeyState As Byte) As Long   'Constant   Const VK_NUMLOCK = &H90   Const VK_SCROLL = &H91   Const VK_CAPITAL = &H14   Const KEYEVENTF_EXTENDEDKEY = &H1   Const KEYEVENTF_KEYUP = &H2   Const VER_PLATFORM_WIN32_NT = 2   Const VER_PLATFORM_WIN32_WINDOWS = 1 Private Sub Worksheet_Activate()  Dim OSVersion As OSVERSIONINFO  Dim CapsLockState As Boolean  OSVersion.dwOSVersionInfoSize = Len(OSVersion)  GetVersionEx OSVersion  Dim keys(0 To 255) As Byte  GetKeyboardState keys(0)  CapsLockState = keys(VK_CAPITAL) 'シートアクティベート  'CapsLock: Off to On  If CapsLockState <> True Then   'Win95/98   If OSVersion.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then    keys(VK_CAPITAL) = 1    SetKeyboardState keys(0)   'WinNT   ElseIf OSVersion.dwPlatformId = VER_PLATFORM_WIN32_NT Then    'Simulate Key Press    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or _      0, 0    'Simulate Key Release    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or _      KEYEVENTF_KEYUP, 0   End If  End If End Sub Private Sub Worksheet_Deactivate()  Dim OSVersion As OSVERSIONINFO  Dim CapsLockState As Boolean  OSVersion.dwOSVersionInfoSize = Len(OSVersion)  GetVersionEx OSVersion  Dim keys(0 To 255) As Byte  GetKeyboardState keys(0)  CapsLockState = keys(VK_CAPITAL)  'シート・ディアクティベート  'CapsLock: On to Off  If CapsLockState Then   'Win95/98   If OSVersion.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then    keys(VK_CAPITAL) = 0    SetKeyboardState keys(0)    'WinNT   ElseIf OSVersion.dwPlatformId = VER_PLATFORM_WIN32_NT Then   'Simulate Key Press    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0   'Simulate Key Release    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY _      Or KEYEVENTF_KEYUP, 0   End If  End If End Sub

参考URL:
http://support.microsoft.com/kb/177674/ja
am20
質問者

お礼

ありがとうございます 参考にさせていただきます。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

Excelのマクロは使えますでしょうか? 以下の方法をお試しください。 1) 目的のブックを開きます。 2) Alt + F11キーを押して、Microsoft Visual Basicを開きます。 3) 開いたMicrosoft Visual Basicの左側、「プロジェクト-VBAProject」に   シート名が何かエクスプローラーのようになっていると思いますが、   その中の目的のシート名が書かれている部分をダブルクリックします。   右側が灰色から白くなり、文字を入力することができるようになります。 4) 目的に応じて、下のA)、B)いずれかをコピーして貼り付けてください。 A) 特定のシートだけCapsLockをオンしたい場合 'ここから-------------------------------------------------------------------------- Private Declare Function GetKeyboardState Lib "User32" (pbKeyState As Byte) As Long Private Keys(0 To 255) As Byte Private Sub Worksheet_Activate()   GetKeyboardState Keys(0)   If CBool(Keys(&H14)) = False Then     SendKeys "+{CAPSLOCK}"     Application.SendKeys "+{CAPSLOCK}"   End If End Sub Private Sub Worksheet_Deactivate()   GetKeyboardState Keys(0)   If CBool(Keys(&H14)) = True Then     SendKeys "+{CAPSLOCK}"     Application.SendKeys "+{CAPSLOCK}"   End If End Sub 'ここまで-------------------------------------------------------------------------- B) 特定のセルだけCapsLockをオンしたい場合(下の例ではセルA1になっています) 'ここから-------------------------------------------------------------------------- Private Declare Function GetKeyboardState Lib "User32" (pbKeyState As Byte) As Long Private Keys(0 To 255) As Byte Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim FCaps As Boolean   FCaps = True '下の行にCapsLockをしたいセルA1が指定されています。 '変更したい時は、絶対参照($付き)で、かつ列名は大文字で指定します。   If Target.Address = "$A$1" Then FCaps = False   GetKeyboardState Keys(0)   If CBool(Keys(&H14)) = FCaps Then     SendKeys "+{CAPSLOCK}"     Application.SendKeys "+{CAPSLOCK}"   End If End Sub 'ここまで-------------------------------------------------------------------------- 5) Microsoft Visual Basicを終了します。 なおソース中にも書いてありますが、Bの例で別のセルを指定したい場合は、 絶対参照かつ大文字で書いてください。例えばセルB10を指定したい場合は、   If Target.Address = "$B$10" とします。 複数のセルを指定したい場合は、上の行を必要なだけ追記してください。   If Target.Address = "$A$1" Then FCaps = False   If Target.Address = "$B$10" Then FCaps = False   If Target.Address = "$C$3" Then FCaps = False と3行続けて書けば、A1とB10とC3にマウスを合わせた時にCapsLockがオンします。 当然A1に合わせてからB10に合わせ直してもCapsLockはオンのままですよ。

am20
質問者

お礼

ありがとうございます。 やはりマクロを使うしかないのでしょうか? できればマクロを使いたくないので。。。

回答No.1

マクロでCapsLock、NumLockキーの切り替える方法 http://www.keep-on.com/excelyou/2003lng4/200310/03100342.txt これが参考になりませんか

参考URL:
http://www.keep-on.com/excelyou/2003lng4/200310/03100342.txt
am20
質問者

お礼

ありがとうございます。 マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。

関連するQ&A