- ベストアンサー
ExcelのVBAについてです。
taocatの回答
こんばんは。 UserForm1.Showの後に、Cancel=True を入れてみてください ----------------------------------------------- Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) UserForm1.Show Cancel = True End Sub ------------------------------------------------- 以上です。
関連するQ&A
- エクセルVBA イベントプロシージャに引数を渡せま
お世話になります。 エクセル2003/XP 使用です。 イベントプロシージャに引数を渡せまるかどうか教えていただけますでしょうか? 下記のコード中の変数mysheetnameを ユーザーフォーム、→ CommandButton1のプロシージャに 引数として渡して行きたいのですが、 実行すると、一番最初のWorkbook_SheetBeforeRightClickの時点で、 コンパイルエラー: プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。 とエラー表示されます。 イベントプロシージャに引数を渡すことはできますでしょうか? ---------- ThisWorkBook内 ---------- Public mysheetname As String Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) mysheetname = ActiveSheet.Name UserForm1.Show (mysheetname) '←変数mysheetnameの値をユーザーフォームに渡したい。 End Sub ---------- ユーザーフォーム ---------- Private Sub UserForm_Initialize(ByVal mysheetname As String ) 処理 End Sub Private Sub CommandButton1_Click(ByVal mysheetname As String ) 処理 End Sub ’--------- ここまで 引数について少し理解し始めたばかりの者です。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- SheetBeforeDoubleClick
ダブルクリックすると、選択セルが切り取り状態になるようにしたいのですが。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Selection.Cut End Sub 上記ではダメでした。 正しい表記法を教えて下さい。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelでシート名と最終更新日を自動表示したい
Excelを使って (1)セルA1に入れた名目をシート名にし (2)セルH1には、最終更新日を自動で入れたいです。 調べた結果、 シート名を右クリックして「コードの表示」から (1)は Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub を入れてうまくいきましたが、 (2)は Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If ThisWorkbook.Saved = False Then Worksheets("Sheet1").Range("H1").Value = Date End If End Sub を入れてみましたが(←調べましたもの) うまくいきませんでした。 単純に、 Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If ThisWorkbook.Saved = False Then Worksheets("Sheet1").Range("H1").Value = Date End If End Sub とつなげて入れるのではだめなんでしょうか? それとも、(2)の何かが間違っていますか? ご教授願います。
- ベストアンサー
- その他MS Office製品
- (エクセルVBA)セルを左クリックしたら実行させるには?
エクセルVBA初心者です。 下のように、同じシート内のコードとして2つのサブプロシージャがある状態なのですが、 シート内のどこかのセルを左クリック→指示(1) シート内のどこかのセルを右クリック→指示(2) のようにするにはどうしたらいいのでしょうか? (この状態だと、右クリックすると選択範囲が変わったことが優先的に認識されて指示(1)のほうが実行されてしまうようです。) 説明不足かもしれませんが、何を説明していいのか分からないので、補足が必要だったら言ってください。すみませんがよろしくお願いします。 --------------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) 指示(1) End Sub --------------------------------------------------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 指示(2) End Sub ---------------------------------------------------------------
- 締切済み
- オフィス系ソフト
- エクセル VBA ユーザーフォームの表示
excel2000にてシートのB列のみで65行目以下をWクリックするとユーザーフォームが表示されるというコードを教えてください。 以下は調べたりした結果のコードです。B列をWクリックすると表示される状態です。 B60とかをクリックしても表示されないようにしたいです。 Worksheetのコード Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True If Target.Column = 2 Then 'B列なら 行 = Target.Row '行番号を取得する UserForm1.Show 'ユーザーフォームを表示する End If End Sub 標準モジュールのコード Option Explicit Public 行 As Variant '行番号 Sub auto_open() Load UFnyuuryoku 'ユーザーフォームをメモリに読み込む End Sub ご存知の方よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel 2007 マクロについて
初心者なりに試行錯誤しながら、チャレンジしています。 B1セルには日付が入力されています。 B1をダブルクリックしたときにUserForm1のTextBox1にその 日付を表示したいのですが上手くいきません。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("B1:B15")) Is Nothing Then Exit Sub Cancel = True UserForm1.Show UserForm1.TextBox1.Value = Target.Value Unload UserForm1 End Sub どこをどのように修正したらよろしいでしょうか?
- ベストアンサー
- その他MS Office製品
- Excel VBA
Excel VBAのテキストを片手に色々(仕事で必要で・・・)試しています。そこで、セルをダブルクリックしたときに実行するマクロを作成してみました。(テキストにしたがって)コピー元シートのA2番地に入力されている文字と同じ文字を、Shieet1の任意のセルをダブルクリックすると自動的に入力されるマクロです。ですが、コピー元の文字だけではなく書式も一緒に反映されるので、任意のセルに書式が設定されている場合、書式が崩れてしまいます。なので、どなたか 文字だけ もしくは 書式だけ を自動実行する方法を教えてください。 なかなか伝わりにくい文章で申し訳ありませんが・・・。宜しくお願いいたします。ちなみに↓↓VBの記述を貼り付けます。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True Worksheets("コピー元").Range("A2").Copy Destination:=Target End Sub
- ベストアンサー
- オフィス系ソフト
- エクセル VBA について
エクセルで、 ダブルクリックしたら"*"を表示したい範囲に【入力】という名前をつけ、 ダブルクリックしたら9つ左のセルの内容を表示したい範囲に【金額】という名前をつけ、 二つの構文?をVisual Basicに作成したんですが、エラーが出てしまいます。 ひとつずつだと上手くいくのですが、なぜでしょうか? わかる方教えてください。 あと申し訳ないのですが、VBAはまったくわからないため、ネット上で構文をコピーして貼り付けました。 そんな者でもわかる修正の説明をお願いいたします。 以下が作成し、エラーとなってしまう構文です。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "金額" If Target.Value = "" Then Target.Value = Target.Offset(0, -9).Value Cancel = True End If End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "*" Then Target = "" Else Target = "*" End If End If End Sub
- 締切済み
- Windows系OS
- 押されたキーにてポップアップメニューを切り替える
OS:XP SP2 アプリ:Excel 2002 ワークシート上で右クリックにてポップアップメニューが表示されますが、Ctrl+右クリック、Shirf+右クリック、Alt+右クリックにて、独自のポップアップメニューを表示させようてしています。 プロジェクトにクラスモジュールを追加し下記の様に宣言しています。 Private WithEvents App As Application Private Sub Class_Initialize() Set App = Application End Sub 右クリックイベント内で現在押されているキーを判断することはできないでしょうか? Private Sub App_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) ここで押されたキーにて表示するメニューを切り替える End Sub 独自のポップアップメニューの追加/表示はできています。 ご教授のほど宜しくお願いします。
- ベストアンサー
- Visual Basic
- どこが間違ってますか? (エクセルVBAです)
質問をご覧くださりありがとうございます。 どなたか助けていただけないでしょうか。 以下のコードの場合、B2セルをダブルクリックすればシート(1)が開くと思っていたのですが、B2以外のセルをダブルクリックしてもシート(1)が開いてしまいます。 どこが悪いのでしょうか。 詳しい方がいらっしゃいましたら、どうか教えてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean) If Target = Range("B2") Then cancel = True Worksheets("シート(1)").Activate End If End Sub どうか、宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
お礼が遅くなって申し訳ありません。 とても助かりました。ありがとうございました。