
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#1
マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。
---使いたくない意味が分かりません。
セキュリティレベルを下げるのも少し不安に感じています。
---何が不安なのかが分かりません。
マクロでしか制御できませんよ。
もし、小文字を大文字にしたいだけなら、
別セルに入力し、表示したいセルに
UPPER関数で大文字にしたら如何ですか。
(アルファベットの問題だけですよね?)
A1に大文字で表示したい場合
で、入力をZ1にするとき
A1に =upper(z1) と入力し、
A1には、CapsLock offで入力
No.4
- 回答日時:
>やはりマクロを使うしかないのでしょうか?
>できればマクロを使いたくないので。。。
>マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。
私の知る範囲では、VBAを使う以外には、方法はないと思います。
Officeのバージョンがいくつかは分かりませんが、「セキュリティの警告」が出る出ないというのは、あまり意味がないと思います。そのVBAが問題を起こすか起こさないかは、本来は、そのコードの内容の問題で、「警告」が出たから、問題だということではありません。それに、ダイヤログを出さない方法もいくつか用意されています。一応、セキュリティ「中」で出さないレベルに収めるなら、「個人認証」という方法があります。
悪意のあるコードなのか、そうでないのかは、VBAがある程度読める人でなければ分かりません。悪意のないコードでも、問題が発生することがあります。Officeで、VBAを使わなくて済むなら、それに越したことはありません。Officeのバージョンやその注意書きを確認し、作者不明のVBAに手を出さなければ、ふつうは問題ないはずなのです。もし、心配ならアンチウィルスで、Officeをプロテクトするのが良いのであって、「セキュリティの警告」は、単なるマクロ付きだという「警告」であって、それは何の阻止にもなりません。それに、プログラムに詳しい人が、その気になれば、そのような警告を出さないようにすることは、簡単なことだからです。
VBAをもう少し勉強なさってください。
この回答へのお礼
お礼日時:2005/04/25 21:18
アドバイスありがとうございます。
私自身マクロについては初心者なものですから、このような質問が出てきたのかもしれません。
もう少し勉強します。。。
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
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はオンのままですよ。
No.1
- 回答日時:
マクロでCapsLock、NumLockキーの切り替える方法
http://www.keep-on.com/excelyou/2003lng4/200310/ …
これが参考になりませんか
参考URL:http://www.keep-on.com/excelyou/2003lng4/200310/ …
この回答へのお礼
お礼日時:2005/04/24 17:53
ありがとうございます。
マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
【マクロ】【相談】Excelブック...
-
【画像あり】オートフィルター...
-
【マクロ】実行時エラー '424':...
-
エクセルのリストについて
-
【マクロ】左のブックと右のブ...
-
【マクロ】元データと同じお客...
-
【マクロ】数式を入力したい。...
-
他のシートの検索
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【マクロ】変数に入れるコード...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】【画像あり】❶ブック...
-
エクセルシートの見出しの文字...
-
【マクロ画像あり】❶1つの条件...
-
【マクロ】【画像あり】ファイ...
-
エクセルの複雑なシフト表から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報