Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4887 / 13644 ツリー ←次へ | 前へ→

【53791】初心者です。教えてください。 mako 08/2/7(木) 13:54 質問[未読]
【53792】Re:初心者です。教えてください。 statis 08/2/7(木) 14:21 発言[未読]
【53803】Re:初心者です。教えてください。 mako 08/2/7(木) 19:41 お礼[未読]
【53793】Re:初心者です。教えてください。 VBWASURETA 08/2/7(木) 14:26 回答[未読]
【53794】Re:初心者です。教えてください。 koshimizu 08/2/7(木) 16:17 発言[未読]
【53806】Re:初心者です。教えてください。 mako 08/2/7(木) 19:48 お礼[未読]
【53813】Re:初心者です。教えてください。 koshimizu 08/2/8(金) 8:22 発言[未読]
【53820】Re:初心者です。教えてください。 わいわい 08/2/8(金) 11:10 発言[未読]
【53825】Re:初心者です。教えてください。 koshimizu 08/2/8(金) 12:10 発言[未読]
【53822】Re:初心者です。教えてください。 mako 08/2/8(金) 11:53 お礼[未読]
【53805】Re:初心者です。教えてください。 mako 08/2/7(木) 19:42 お礼[未読]
【53811】Re:初心者です。教えてください。 mako 08/2/8(金) 8:13 質問[未読]
【53814】Re:初心者です。教えてください。 VBWASURETA 08/2/8(金) 10:21 回答[未読]
【53823】Re:初心者です。教えてください。 mako 08/2/8(金) 11:55 お礼[未読]

【53791】初心者です。教えてください。
質問  mako E-MAIL  - 08/2/7(木) 13:54 -

引用なし
パスワード
   Excel:Microsoft Excel 2002
OS:WindowsXP

セルをクリックするだけで”〇”を入力したいのですが。

【53792】Re:初心者です。教えてください。
発言  statis  - 08/2/7(木) 14:21 -

引用なし
パスワード
   ▼mako さん:
こんにちは
>Excel:Microsoft Excel 2002
>OS:WindowsXP
>
>セルをクリックするだけで”〇”を入力したいのですが。

ワンクリックのイベントはありませんのでダブルクリック又は右クリックでは
如何でしょうか?

セルに○がある場合はどうなりますか?
すべてのセルを対象とするのでしょうか?

【53793】Re:初心者です。教えてください。
回答  VBWASURETA  - 08/2/7(木) 14:26 -

引用なし
パスワード
   ▼mako さん:

こんにちは。

かなり手っ取り早いのはAPIなので、
理解しにくいかも知れませんが以下のような方法で可能です。


Const VK_LBUTTON = &H1 '[LeftClick]

'User32ライブラリ定義
Private Declare Function GetAsyncKeyState Lib "User32.dll" ( _
                ByVal vKey As Long _
                ) As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  '左クリックされた
  If GetAsyncKeyState(VK_LBUTTON) Then
    Target.Value = "○"
  End If
End Sub

【53794】Re:初心者です。教えてください。
発言  koshimizu  - 08/2/7(木) 16:17 -

引用なし
パスワード
   VBWASURETA さん:
mako さん:

こんにちは。

シートモジュールに下記を
ダブルクリックイベントで

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveCell.FormulaR1C1 = "○ "
End Sub

こんなのをどこかのサイトで見ました。

【53803】Re:初心者です。教えてください。
お礼  mako  - 08/2/7(木) 19:41 -

引用なし
パスワード
   ▼statis さん:早々ありがとうございます。
ダブルクリック又は右クリックでも結構です?
具体的に教えて下さい。本当に初心者です。細かくお願いします。
さらに、もう一度クリックすると消えるようにも出来ますか?

>▼mako さん:
>こんにちは
>>Excel:Microsoft Excel 2002
>>OS:WindowsXP
>>
>>セルをクリックするだけで”〇”を入力したいのですが。
>
>ワンクリックのイベントはありませんのでダブルクリック又は右クリックでは
>如何でしょうか?
>
>セルに○がある場合はどうなりますか?
>すべてのセルを対象とするのでしょうか?

【53805】Re:初心者です。教えてください。
お礼  mako  - 08/2/7(木) 19:42 -

引用なし
パスワード
   ▼VBWASURETA さん:
ありがとうございます。初心者のため、以下の方法をどのようにすればよいか分かりません。もう少し詳しくお願いできますか?
>▼mako さん:
>
>こんにちは。
>
>かなり手っ取り早いのはAPIなので、
>理解しにくいかも知れませんが以下のような方法で可能です。
>
>
>Const VK_LBUTTON = &H1 '[LeftClick]
>
>'User32ライブラリ定義
>Private Declare Function GetAsyncKeyState Lib "User32.dll" ( _
>                ByVal vKey As Long _
>                ) As Long
>
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>  '左クリックされた
>  If GetAsyncKeyState(VK_LBUTTON) Then
>    Target.Value = "○"
>  End If
>End Sub

【53806】Re:初心者です。教えてください。
お礼  mako  - 08/2/7(木) 19:48 -

引用なし
パスワード
   ▼koshimizu さん:ありがとうございます。
やってみました。できました。シートの選択はもちろんですが、
シートの中の指定したセル範囲にすることは出来ますか?
>VBWASURETA さん:
>mako さん:
>
>こんにちは。
>
>シートモジュールに下記を
>ダブルクリックイベントで
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>ActiveCell.FormulaR1C1 = "○ "
>End Sub
>
>こんなのをどこかのサイトで見ました。

【53811】Re:初心者です。教えてください。
質問  mako E-MAIL  - 08/2/8(金) 8:13 -

引用なし
パスワード
   ▼VBWASURETA さん:
さらにお願いです。
1:もう一回クリックすれば消すことは出来ますか?
2:シート内の範囲指定は出来ますか?
よろしくお願いします。
>▼mako さん:
>
>こんにちは。
>
>かなり手っ取り早いのはAPIなので、
>理解しにくいかも知れませんが以下のような方法で可能です。
>
>
>Const VK_LBUTTON = &H1 '[LeftClick]
>
>'User32ライブラリ定義
>Private Declare Function GetAsyncKeyState Lib "User32.dll" ( _
>                ByVal vKey As Long _
>                ) As Long
>
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>  '左クリックされた
>  If GetAsyncKeyState(VK_LBUTTON) Then
>    Target.Value = "○"
>  End If
>End Sub

【53813】Re:初心者です。教えてください。
発言  koshimizu  - 08/2/8(金) 8:22 -

引用なし
パスワード
   mako さん:
おはようございます。

たとえばA1からC10の範囲なら

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
  With Target
   If Application.Intersect(Target, Range("A1:C10")) Is Nothing Then Exit Sub
'A1からC10の範囲で
    Cancel = True
    ActiveCell.FormulaR1C1 = "○"
    End With
End Sub

【53814】Re:初心者です。教えてください。
回答  VBWASURETA  - 08/2/8(金) 10:21 -

引用なし
パスワード
   ▼mako さん:

おはようございます。

詳しくというよりこれをWorksheetオブジェクト内に
そのままコピぺするだけで使える内容ですが・・・

後、範囲指定と消せる内容です。


Const VK_LBUTTON = &H1 '[LeftClick]

'User32ライブラリ定義
Private Declare Function GetAsyncKeyState Lib "User32.dll" ( _
                ByVal vKey As Long _
                ) As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim strfrom As String  '範囲開始位置アドレス
  Dim strto  As String  '範囲終了位置アドレス
  
  'セルを複数選択した場合は無効
  If Target.Count > 1 Then Exit Sub

  'セル範囲
  strfrom = "B6"
  strto = "F15"
  
  '範囲開始位置と終了位置比較
  If (StrComp(strform, strto, 0) >= 0) Then
    Exit Sub '開始位置と終了位置の範囲があってない
  End If
    
  If (Application.Intersect(Target, Range(strfrom & ":" & strto)) Is Nothing) Then
    Exit Sub
  End If
  
  '左クリックされた時に入る処理
  If GetAsyncKeyState(VK_LBUTTON) Then
    If (Target.Text = "○") Then
      Target.Value = "" '丸を消す
    Else
      Target.Value = "○" '丸をつける
    End If
  End If
  
End Sub

【53820】Re:初心者です。教えてください。
発言  わいわい  - 08/2/8(金) 11:10 -

引用なし
パスワード
   mako さん koshimizu さん こんにちわ

VBA初級者の私が、自身の向上の為にVBA入門編を作ることにしました。
仲の良い人の為にだけですけど…。
で、良い材料になりそうなのでレスさせてもらいます。

koshimizuのコードをチョット拝借して

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim T As Range
If Intersect(Target, Range("A1:C10")) Is Nothing Then Exit Sub 'A1からC10の範囲で
Cancel = True      '普通のとき出てくる灰色のやつが出ないように

For Each T In Intersect(Target, Range("A1:C10"))
  With T
    If .Value = "○" Then
      .Value = ""
    ElseIf IsEmpty(.Value) Then
      .Value = "○"
    End If
  End With
Next
End Sub

文章べたの私はいつも箇条書き
このコード、まずはSheet1のシートモジュールにコピペ!
『シートモジュール???』の場合は 
excelvba.pc-users.net/fol3/3_6.html にアクセス♪

早速、コードのイメージ説明します♪
Sheet1の中で右クリックしたとき動きだす
けれどもさぁ、右クリした場所が Range("A1:C10") 以外は やっぱやめ
そこで、身の軽さが持ち前の Tさん 登場
Selectされ、しかも決められた範囲で駆け抜ける
    Tさんは、その場その場で立ち回る
        もしもそうなら、こんなこと
        そうじゃなく、もしもこうならあんなこと
さあ次だ。掛かって来い♪と次に行く

ちゃんと理解するなら
excelvba.pc-users.net/index.html
私が参考にしているサイトです。

【53822】Re:初心者です。教えてください。
お礼  mako E-MAIL  - 08/2/8(金) 11:53 -

引用なし
パスワード
   ▼koshimizu さん:
本当にありがとうございました。役に立ちました。
次回またお願いするかもしれません。
>mako さん:
>おはようございます。
>
>たとえばA1からC10の範囲なら
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
>  With Target
>   If Application.Intersect(Target, Range("A1:C10")) Is Nothing Then Exit Sub
> 'A1からC10の範囲で
>    Cancel = True
>    ActiveCell.FormulaR1C1 = "○"
>    End With
>End Sub

【53823】Re:初心者です。教えてください。
お礼  mako E-MAIL  - 08/2/8(金) 11:55 -

引用なし
パスワード
   ▼VBWASURETA さん:
本当にありがとうございました。
要求したとおりの指示が出せました。
今後ともよろしくお願いします。
>▼mako さん:
>
>おはようございます。
>
>詳しくというよりこれをWorksheetオブジェクト内に
>そのままコピぺするだけで使える内容ですが・・・
>
>後、範囲指定と消せる内容です。
>
>
>Const VK_LBUTTON = &H1 '[LeftClick]
>
>'User32ライブラリ定義
>Private Declare Function GetAsyncKeyState Lib "User32.dll" ( _
>                ByVal vKey As Long _
>                ) As Long
>
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>  Dim strfrom As String  '範囲開始位置アドレス
>  Dim strto  As String  '範囲終了位置アドレス
>  
>  'セルを複数選択した場合は無効
>  If Target.Count > 1 Then Exit Sub
>
>  'セル範囲
>  strfrom = "B6"
>  strto = "F15"
>  
>  '範囲開始位置と終了位置比較
>  If (StrComp(strform, strto, 0) >= 0) Then
>    Exit Sub '開始位置と終了位置の範囲があってない
>  End If
>    
>  If (Application.Intersect(Target, Range(strfrom & ":" & strto)) Is Nothing) Then
>    Exit Sub
>  End If
>  
>  '左クリックされた時に入る処理
>  If GetAsyncKeyState(VK_LBUTTON) Then
>    If (Target.Text = "○") Then
>      Target.Value = "" '丸を消す
>    Else
>      Target.Value = "○" '丸をつける
>    End If
>  End If
>  
>End Sub

【53825】Re:初心者です。教えてください。
発言  koshimizu  - 08/2/8(金) 12:10 -

引用なし
パスワード
   わいわい さん:
こんにちは
右クリック良いですね。

ダブルクリックで丸
もう一度ダブルクリックすると消える
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Not Intersect(Target, Range("A1:C10")) Is Nothing Then
  If IsEmpty(Target.Value) Then
   Target.Value = "○"
  Else
   Target.ClearContents
  End If
  Cancel = True
 End If
End Sub

4887 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free