• 締切済み

エクセル2010のvbaについて

押されたコマンドボタンの名前を取得したいです (調べてみましたがエラーになり取得できませんでした) 後コマンドボタンがたくさんあり、コードも長く とても邪魔なので省略したいのですができますか? (左クリックと右クリックで違う処理をした後       MouseDown コマンドボタンの名前で少し処理を変えるコードです) MouseUp (下のコードのような感じです) 回答お願いします Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Select Case Button Case 1 Range("A1") = 1 Case 2 Range("A1") = 2 End Select End Sub Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) If (コマンドボタンの名前を取得) = "aaa" Then Range("A1") = Range("A1") + 1 Else Range("A1") = Range("A1") - 1 End If End Sub

みんなの回答

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2
atamanotaisou1
質問者

補足

すいません 回答締め切ります

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

これが参考になるんじゃないかな。 http://okwave.jp/qa/q5697368.html

atamanotaisou1
質問者

補足

すいません 色々いじってみたのですが上手くいきませんでした

関連するQ&A

  • エクセル2010のコマンドボタンついて

    MouseDownイベントでループ(Doなど)をさせた後 MouseUpイベントでStopさせるコードを作りましたが MouseUpイベントまで行かずずっとループしてしまいます (押されている間はボタンが凹んでいますが このコードにすると凹まず中断しないと 動かせないようになってしまいます) 何が原因がわからないので回答お願いします 下はコードです Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Select Case Button Case 1 Range("A1") = 1 Case 2 Range("A1") = 3 End Select Do Range("A1") = Range("A1") + Range("A1") Loop End Sub Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Stop End Sub (Select Case Button Case 1...にしても変わりませんでした)

  • エクセル2010のvbaについて

    Sheet1に挿入したイメージ(ActiveX)をクリックすると数字が上がって 実行中にもう一度同じイメージをクリックすると止まるようにしたいのですが 数字が上がったまま止まりません(上限はあるのでオーバーフローはしません) Worksheet_SelectionChangeで(ActiveXのイメージがもう一回押されて) 選択セルが変わったら停止としたかったのですが反応しません イメージをクリック(実行)してもう一回押すとクリックしている間は止まりますが離すと再開されます コードにクリックされた回数がわかるようにしましたが増えません 説明が分かりにくかったら追記します 回答お願いします クラスモジュールのコード(イメージの名前によって少し処理を変えるためです) Private Sub myImg_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Dim i As Integer, a, b, C As POINTAPI, obj As OLEObject i = myImg.Index - 1 Call GetCursorPos(C) Set obj = ActiveWindow.RangeFromPoint(C.X, C.Y) b = Range("A1") Range("A1") = obj.Name Range("A2") = Range("A2") + 1    'クリックされた回数が分かるようにするため追加 If Range("A2") = 2 Then Range("C1").Select End If Range("A3") = "B1" If obj.Name = 2 Then Range("A3") = "B3" Range(Range("A3")).Select End Sub Sheet1のコード Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Target.Address <> Range(Range("A3")).Address Then Exit Sub Do While ActiveCell < Range("A4") * 100 If ActiveCell.Address <> Range(Range("A3")).Address Then Exit Do End If DoEvents ActiveCell = ActiveCell + 1 Loop End Sub

  • 同じコマンドボタンからマウスカーソルがはなれたら

    フォーム上のコマンドボタンにマウスカーソルが触れたら色を付ける、 同じコマンドボタンからマウスカーソルがはなれたら 、また色を変える、 という動きをvbaで行いたいのですが、 Private Sub cmd_test_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.cmd_test.BackColor = RGB(255, 180, 200) End Sub で、マウスカーソルが触れたら色を付けることはできたのですが、 マウスカーソルがそのコマンドボタンから離れたら色を変えるという動きができません。 Private Sub cmd_test_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Me.cmd_test.BackColor = RGB(255, 255, 255) End Sub Private Sub cmd_test_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Me.cmd_test.BackColor = RGB(255, 255, 255) End Sub Private Sub cmd_test_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.cmd_test.BackColor = RGB(255, 255, 255) End Sub をしても、マウスカーソルが離れても色が白になりませんでした。

  • 【Excel VBA】コマンドボタンの選択&移動

    Excel2003を使用しています。 以前、こちらで教えていただいて、1クリックで1ページ分移動するコマンドボタンを作成しました。 左クリックでDown、右クリックでUpし、Sheet2モジュールに下記のコードを記述しています。 このコマンドボタン自体を選択して、現在配置している場所(セル上)から移動させたい場合、どのように操作すればいいでしょうか? 右クリック、左クリック両方にページ移動が設定されているため、コマンドボタン自体を選択することができません…。 マクロが動作しないよう、一旦、コードを削除して、ボタンをクリックしてみたのですが、選択状態になりませんでした。 よろしくお願いします。 ------------------------------------------------------- Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  '左クリック-進む-Down  '右クリック-戻る-Up   CommandButton1.Caption = "左-Down, 右-Up"   Dim WinTop As Long   Dim i As Long   i = Int((ActiveCell.Row) / 26) + 1   If Button = 1 Then     Application.Goto Cells(i * 26 + 1, 1), True   ElseIf Button = 2 Then     If i > 1 Then       Application.Goto Cells((i - 2) * 26 + 1, 1), True     End If   End If    WinTop = ActiveWindow.VisibleRange.Top + 2 '(2は縦の位置調整)    CommandButton1.Top = WinTop End Sub

  • VB6 Form内のDragDrop

    VB6でForm内にCommandButtonがいくつか有ります。 各CommandButtonはClickするとShellオブジェクトでファイルを開く様になっています。 やりたいことは 2つのCommandButton間をDragDrop?によりCaptionを入れ替えたいです。 (CommandButton間をマウスDragDropでCaption名入れ替え) MouseDownとDragDropイベントで何とかなると思いましたがうまくいきません。 Dim dd As Integer Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then dd = 1 'CommandボタンNo, End If End Sub Private Sub Command2_DragDrop(Source As Control, X As Single, Y As Single) Dim cn As String cn = Command2.Caption Command2.Caption = Controls("Command" & dd).Caption Controls("Command" & dd).Caption = cn End Sub CommandButtonプロパティでDragModeを自動にするとShellオブジェクトでファイルが開かないし サイトで調べたところファイルの移動やコマンド自体の移動などで分かりませんでした。 ご教授お願い致します。

  • Access VBAによるフォームの色変更。

    個人での捜索に行き詰ってしまいましたので、ご相談させていただきます。 ○使用環境 WindowsXP Access2007 VBAで色変更する、Accessのフォームについて質問させていただきます。 下記の記述で「フォーム名」というフォームをボタンで開こうとしています。 Private Sub コマンド2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)   DoCmd.OpenForm Form_フォーム名.Name   Form_フォーム名.Section(0).BackColor = "12349952" End Sub Private Sub コマンド3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)   DoCmd.OpenForm Form_フォーム名.Name   Form_フォーム名.Section(0).BackColor = "1643706" End Sub その際、ボタンによって背景色を変更して表示しようとしています。 デザインビューで「フォーム名」のプロパティを変更した直後はボタンの操作で背景色が変わりますが、 一度、「フォーム名」をクローズして、再度ボタンの操作でオープン するときには反映されなくなっています。 もしかしたら、自身の方で何か見落としがあるかもしれませんが、同様の事象をご存知の方がおられましたら、ご指南いただきたいです。 宜しくお願い致します。

  • エクセルのuserform1上に、コントロールボタンを配置し、コントロ

    エクセルのuserform1上に、コントロールボタンを配置し、コントロールボタン上にカーソルを持っていくと、 別のuseruform2が表示されるようにしたいのですが、 コントロールボタンを消すときに、userform1が白抜きになってしまいます。 きれいにuserform2を消す方法をおしえてください。 Private Sub UserForm1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Unload userform2 End Sub

  • ACCESS VBA 判定に利用できる情報について

    下のようなテストプログラムを作ってみました。 サブルーチン chgcolorの中で、どちらの上位ルーチンからコールされたか で処理を切り替えたいと考えています。上位ルーチンからの引数を増やす ことなく、判定する方法はないものでしょうか。  アドバイスお願いします。 Private Sub txt1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Call chgcolor(Me.txt1) End Sub  : Private Sub txt1_DblClick(Cancel As Integer) Call chgcolor(Me.txt1) End Sub  : Sub chgcolor(a As Control) ◇txt1_MouseDownからコールされた場合(またはクリックイベントの場合) →a.BackColor = CLng("&HFF00FF") ◇txt1_DblClickからコールされた場合(またはダブルクリックイベントの場合) →a.BackColor = CLng("&HFFFFFF") End Sub

  • VBA Excel

    分散が既知の場合の区間推定のプログラムを考えています。 次のマクロを実行するとエラーが出ます。 エラー:"1004" 引数の数の誤りがあります。 どこの行がエラーなのか分かりません。どこなのでしょうか? また、プログラムでおかしいところがあったら、教えてください。 Sub Calculate(DataRange As String, OutRange As String, a As Single) Dim RanData As Range Dim Ave As Single, n As Single, n1 As Integer, n2 As Integer Dim Std As Single, s As Single, p As Single, z As Single, aa As Single Dim b As Single, kukan As Single, Max As Single, Min As Single Set RanData = Range(DataRange) n1 = RanData.Rows.Count n2 = RanData.Columns.Count n = n1 + n2 Ave = Application.Average(RanData) Std = Application.StDev(RanData) s = Std * Std p = (1 + a) / 2 z = Application.NormInv(0, 1) b = Sqr(s / n) kukan = z * b Max = Ave + kukan Min = Ave - kukan aa = a * 100 Range(OutRange).Select Call output("信頼度", aa) Call output("標本数", n) Call output("平均", Ave) Call output("標準偏差", Std) Call output("分散", s) Call output("信頼区間", kukan) Call output("信頼上限", Max) Call output("信頼下限", Min) End Sub Private Sub output(name As String, x As Single) ActiveCell.Range("A1") = name ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.Range("A1") = x ActiveCell.Offset(1, -1).Range("A1").Select End Sub Sub Prob() UserForm1.Show End Sub

  • (続)EXCEL VBA のコードをズバリで!

    http://okwave.jp/qa/q6535908.html で、完成かと思われましたが・・・。 円の雛型の各種設定が保存・呼び出しで初期化されるという不具合が発生。 急遽、円を生成することにしました。 そこで、次の質問を致します。 質問1、.Ovals.Add(200, 0, 20, 20) は、これでよいのでしょうか? 質問2、.Border.LineStyle で点線の記号定数 質問3、文字の垂直方向の指定要領・・・中心 質問4、内部の余白の指定要領・・・上下を0に なお、現在の円を生成するコードは次のようです。 Sub cmdUpdateSokueki_1()   Set myDocument = Worksheets("調査データ")   Dim r As Range ' 読み込むRange   ・・・・・   Dim shapeCounter As Integer ' 描画する円のカウンター(=name)   With myDocument     For Each r In .Range("C15", .Range("C65536").End(xlUp))       ・・・・・       If tubeState >= 0 Then         ・・・・・         createShapes_1 "特殊部管理台帳", shapeCounter, shapeNumber, tubeState, shapeDiameter         ・・・・・       End If     Next r   End With End Sub 更新Subが呼び出す Sub です。 Public Sub createShapes_1(ByVal sheetName As String, _              ByVal shapeCounter As Integer, _              ByVal shapeNumber As Integer, _              ByVal tubeState As Integer, _              ByVal shapeDiameter As Single)   Set myDocument = Worksheets(sheetName)   Dim intLeft As Integer   Dim intTop As Integer   With myDocument     intLeft = .Range("I37").Offset(, (shapeCounter Mod 7) * 2).Left     intTop = .Range("I37").Offset((shapeCounter \ 10) * 2, 0).Top     With .Ovals.Add(200, 0, 20, 20)       Select Case tubeState         Case 0           .Border.LineStyle = msoLineSolid ' 本来は点線 ********           .Interior.Color = vbWhite           .Font.Color = vbWhite         Case 1           .Border.LineStyle = msoLineSolid           .Interior.Color = vbWhite           .Font.Color = vbBlack         Case 2           ・・・・・         Case Else       End Select       .Name = "oval100" & Format(shapeCounter, "00")       .Placement = xlMove       ・・・・・       .Left = intLeft       .Top = intTop       .Orientation = 3     End With   End With End Sub PS:一応は所定の位置に円を描画しています。

専門家に質問してみよう