Excell VBA にて、
ユーザーフォーム(userForm1)に、スプレッドシートを
1)その他のコントロール
2)Microsoft Spreadsheetを追加
によって追加して、
そのspreadSheet1上のsheet1の任意のセル(D:*)をクリックしたとき、その行のD1:D5k一連の値を変数に代入したいのですが、
まず手始めとして、そのセルを選択したときにイベントを発生させたい。
該当のセルを選択してプロシージャを追加すると
Private Sub Spreadsheet1_BeforeContextMenu( _
ByVal x As Long, _
ByVal y As Long, _
ByVal Menu As OWC11.ByRef, _
ByVal Cancel As OWC11.ByRef _
)
となります。
比較のため
Private Sub Spreadsheet1_SelectionChange(ByVal Target As Range)
If Target.Address() = "$A$1" Then
MsgBox "このセルはA1です。"
End If
End Sub
だと、
Error・・・「コンパイル エラー:
プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。」
・・・どうすればよいのでしょう。
最終的には、「その行のいくつかの値を変数に代入したい」のですが
こんにちは。
Private Sub Spreadsheet1_SelectionChanging(ByVal Range As OWC11.Range)
With Spreadsheet1
'クリックしたセルの1行目の値
MsgBox .Cells(1, Range.Column).Value
End With
End Sub
以下のようにしてみてはどうでしょうか?
Private Sub Spreadsheet1_SelectionChanging(ByVal Range As OWC11.Range)
If Range.Address = "$A$1" Then
MsgBox "このセルはA1です。"
End If
End Sub
質問者
補足
うまく行きました。
Private Sub Spreadsheet1_SelectionChanging(ByVal Range As OWC11.Range)
MsgBox Cells(Range.Column, Range.Row).Value & "だけど"
MsgBox "このセルは" & Range.Address(False, False) & "です"
MsgBox "このセルは" & Range.Address(True, True) & "です"
MsgBox "行番号は" & Range.Row & "です。"
MsgBox "列は" & Range.Column & "です"
End Sub
しかし、では R1Cの値[R1C1]・・同じ行の最初のセルの値を取得しようとしても、うまく行きません。
どうしたらよいのでしょう。
End Sub
補足
うまく行きました。 Private Sub Spreadsheet1_SelectionChanging(ByVal Range As OWC11.Range) MsgBox Cells(Range.Column, Range.Row).Value & "だけど" MsgBox "このセルは" & Range.Address(False, False) & "です" MsgBox "このセルは" & Range.Address(True, True) & "です" MsgBox "行番号は" & Range.Row & "です。" MsgBox "列は" & Range.Column & "です" End Sub しかし、では R1Cの値[R1C1]・・同じ行の最初のセルの値を取得しようとしても、うまく行きません。 どうしたらよいのでしょう。 End Sub