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をもう少し勉強なさってください。
アドバイスありがとうございます。
私自身マクロについては初心者なものですから、このような質問が出てきたのかもしれません。
もう少し勉強します。。。
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/ …
ありがとうございます。
マクロを使うとセキュリティ警告が出てしまうので、使いたくないのです。。。セキュリティレベルを下げるのも少し不安に感じています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセルで英数大文字のみの入力制限は可能ですか
Excel(エクセル)
-
エクセルVBAでNumLockキーの状態を確認する
Excel(エクセル)
-
テキストボックスに大文字を
Visual Basic(VBA)
-
-
4
EXCELで大文字入力
Excel(エクセル)
-
5
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
6
CapsLock送信 キーストローク
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報