[[20220801135046]] 『vba』(bukky) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vba』(bukky)

初心者です 

   A B C D

 1 ABE INOU KOBA FUJI

  2

  3     ACELL

  4

ACTIVECELLがあるところ行1を表示したいのですが上の場合はINOUです

変数を使って完成させると思うのですがうまくいきません
初歩的な質問で申し訳ありませんが宜しくお願いします

< 使用 Excel:Excel2016、使用 OS:Windows10 >


>変数を使って完成させると思うのですがうまくいきません

何が上手くいかなかったのか、提示してください。
作成途中でエラーになるとしても、コードを提示してください。
そこから、貴方の理解度を推測して、マッチした回答が得られると思いますが。
お互い、無駄なことはしたくないですからね。

作って欲しいなら、ハッキリ仰ったほうがいいですね。

(tkit) 2022/08/01(月) 14:10


■1
表題から想像してVBAの質問だとおもいますが、もう少し具体的に書かれたほうがよいかとおもいます。

■2
>変数を使って完成させると思うのですがうまくいきません
なにを、どうしたら”うまくいかない”のか【現状のコード】を示したうえで、具体例をあげて(エラーが出るなら、その個所・エラー番号・エラーメッセージ、エラーにならないが想定外の動作になるなら××になるはずが○○となってしまう等)説明されるとよいでしょう。

■3
>ACTIVECELLがあるところ行1を表示したいのですが上の場合はINOUです
表が崩れてよくわかりません。
↓のような表だとして、【アクティブセルがB3セル】のときにどうなればいいのですか?

     _A__   _B__   _C__   _D__
 1  ABE    INOU   KOBA   FUJI
  2
  3
  4

 ※1 想像するに、アクティブセルに、同じ【列】の1行目の値を持ってきたいと思うのですが念のため確認しています。
 ※2 上記の想像どおりなら変数は要りません。

(もこな2) 2022/08/01(月) 14:17


分かりにくくてすみません

セルがB3のときはINOUです  当然B4でも同じです
  C2ではKOBAです

(bukky) 2022/08/01(月) 14:31


質問の意味が全く解らない。

Msgbox activecell.value

 >ACTIVECELLがあるところ行1を表示

 ??????
 変数が出てくるとこも不明
 なまじ知ったような言葉は書かん方がいいと思う。
 余計に意味が解らない。

(意味不明) 2022/08/01(月) 15:04


■4
繰り返しになりますが【現状のコード】を示したうえで、【具体例をあげて】どのように"うまくいかない"のか説明されるとよいでしょう。

こちらの想像どおりなら↓のようにするだけだと思っています。

 [アクティブセル]の値 = [1行目,アクティブセルの列]のセルの値

(もこな2) 2022/08/01(月) 15:05


ユ−ザ−ホ-ムにテキストボックス1があります

セルをクリックしたときにユ−ザ−ホームがひらいてテキストボックス1に列の1行目の文字が表記されるようにしたいのです。

Private Sub UserForm_Initialize()
Dim c
For c = 1 To 30

      Me.TextBox1.Value = Cells(1, c).VALUE
NEXT
 これでだめですよね

(bukky) 2022/08/01(月) 15:23


■5
>これでだめですよね
そのコードはどういう意味か理解してますか?
理解できていれば、自ずと答えはわかりますよね。

■6
>セルをクリックしたとき
○○をしたとき〜という条件でマクロを発動させるには、【イベント】というものを使いますが、残念ながら”クリックしたとき”という条件は用意されていません。
【右クリックをしたとき】【ダブルクリックをしたとき】という条件ならばありますので、そちらに変えられないか検討をおすすめします。

■7
よって、例えば↓のような処理を考えると良いでしょう

 右クリックをしたら発動するマクロ
  ユーザーフォームを(読み込んで)表示
 処理終了
 '=============================================================================
 ユーザーフォームが読み込まれるときに発動するマクロ
   Me.TextBox1.Value に アクティブシートの[1行目,アクティブセルの列]のセルの値 を入れる
 処理終了

なお、右クリックイベントやダブルクリックイベントは【シート】で発生するものなので、シートモジュール書きますし、【ユーザーフォーム】に関するイベントはユーザーフォームのモジュールに書くようにしてください。

(もこな2) 2022/08/01(月) 15:51


 されたい事が、明確にわかりませんが…推測するに
 提示されたコード内容だと…程遠いですね。

 では、ダメダメかと言うと…0点ではありませんが
 点数を付けるなら、100点満点中...15点位でしょうか (-ω-;)ウーン

 (もこな2)さんから、アドバイスを頂いてますが
 100点に持っていくには、ご自身では至難かと思いますので
 少々、応援です。(参考になれば)

 >セルをクリックしたときにユ−ザ−ホームがひらいてテキストボックス1に列の1行目の文字が表記されるようにしたいのです。

 厳密に言うと、セルをクリックではないですが、セルを選択したときに
 発動させるイベントではどうなのでしょうか?

 ※対象のシートモジュールへ記入して、セルを選択してみてください。

 ◇ヒント1

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox Target.Address(False, False)
 End Sub

 ◇ヒント2

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox Cells(1, Target.Column).Value
 End Sub

【注意】

 ・同じイベントは両方はいっぺんに動きませんので
   ひとつずつしてください。

 ・ヒント1は、直接関係がありませんが、理解をしておくと
   将来的に良いかなと思います。

 では、頑張ってください。

(あみな) 2022/08/02(火) 06:24


 >セルをクリックしたときに
 >ユ−ザ−ホームがひらいてテキストボックス1に列の1行目の文字が表記されるようにしたい

 「セルを右クリックしたとき」にしましょうよ。
 (ここ10年間「単純クリック」でまともに成功した例を見た事ありません)

 '<ユーザーフォーム>のモジュールに
 Private Sub UserForm_Initialize()
     TextBox1.Value = Cells(1, ActiveCell.Column).Value
 End Sub

 '<当該シート>のモジュールに
 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     If Target.CountLarge = 1 Then '単セルの時だけ処理
         Cancel = True
         UserForm1.Show
     Else
         Exit Sub
     End If
 End Sub

(半平太) 2022/08/02(火) 09:28


 ↑ と…大先輩が、おっしゃっています。

 ※既に、完成してますし...(笑)

(あみな) 2022/08/02(火) 10:07


話が終わっているかと思いますがコメントしておきます。

SelectionChangeイベントが思いつかなかったわけではないのですが、

 1) clickとただの選択の区別がつかない
 2) マウス操作じゃなくても発動する
 3) ActiveCellを選択しても発動しない

ということころから、なかったことにした次第です。

ですが、どうしても【クリック】に拘りたいということであれば、セルに何らかの入力があることが前提とはなりますが、次のアプローチが使える・・・・・かもしれません。

【標準モジュール】

    Sub 事前準備()
        Dim MyRNG As Range

        For Each MyRNG In ActiveSheet.UsedRange
            ActiveSheet.Hyperlinks.Add Anchor:=MyRNG, Address:=""
            MyRNG.Font.ColorIndex = xlAutomatic
            MyRNG.Font.Underline = xlUnderlineStyleNone
        Next MyRNG
    End Sub

【シートモジュール】

    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        MsgBox Cells(1, ActiveCell.Column).Value
    End Sub

要は、わかりづらいように【ハイパーリンク】を設定しておき、ハイパーリンクを"クリック"したときのイベントを使ってみるという方法です。

 ※一応、できなくはないという話であって推奨するという話ではありません。参考として理解してください。

ほか、後学のために教えて頂きたいのですが、↓は結合セル対策でしょうか?

 If Target.CountLarge = 1 Then 

意図がわからなかったので便乗ですが、ご教授いただけると幸いです。

(もこな2) 2022/08/02(火) 18:31


 >↓は結合セル対策でしょうか?
 > If Target.CountLarge = 1 Then 

 範囲選択して右クリックした場合は、処理対象外であろうと思ってのことです。

(半平太) 2022/08/02(火) 20:18


>範囲選択して右クリックした場合は、処理対象外であろうと思ってのこと
なるほど、そういう意図だったのですね。回答ありがとうございました。

(もこな2) 2022/08/04(木) 12:47


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.