Excel VBA質問箱 IV

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

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


4800 / 13646 ツリー ←次へ | 前へ→

【54358】アクティブセルについて ゆゆゆ 08/3/10(月) 15:46 質問[未読]
【54360】Re:アクティブセルについて トオリスガリ 08/3/10(月) 16:51 発言[未読]
【54361】Re:アクティブセルについて VBWASURETA 08/3/10(月) 16:53 回答[未読]
【54364】Re:アクティブセルについて ゆゆゆ 08/3/10(月) 17:06 発言[未読]
【54366】Re:アクティブセルについて VBWASURETA 08/3/10(月) 17:15 回答[未読]
【54367】Re:アクティブセルについて ゆゆゆ 08/3/10(月) 17:25 回答[未読]
【54370】Re:アクティブセルについて VBWASURETA 08/3/10(月) 17:30 発言[未読]
【54371】Re:アクティブセルについて neptune 08/3/10(月) 17:33 発言[未読]
【54374】Re:アクティブセルについて ゆゆゆ 08/3/10(月) 17:37 回答[未読]
【54375】Re:アクティブセルについて VBWASURETA 08/3/10(月) 17:44 質問[未読]
【54378】Re:アクティブセルについて neptune 08/3/10(月) 17:52 回答[未読]
【54373】Re:アクティブセルについて ハチ 08/3/10(月) 17:36 発言[未読]
【54380】Re:アクティブセルについて ゆゆゆ 08/3/10(月) 18:06 発言[未読]
【54381】Re:アクティブセルについて ゆゆゆ 08/3/10(月) 18:22 発言[未読]
【54382】Re:アクティブセルについて VBWASURETA 08/3/10(月) 18:42 発言[未読]
【54384】Re:アクティブセルについて ゆゆゆ 08/3/10(月) 18:55 発言[未読]
【54386】Re:アクティブセルについて neptune 08/3/10(月) 22:53 回答[未読]
【54389】Re:アクティブセルについて ゆゆゆ 08/3/11(火) 10:16 回答[未読]
【54390】Re:アクティブセルについて VBWASURETA 08/3/11(火) 10:52 発言[未読]

【54358】アクティブセルについて
質問  ゆゆゆ  - 08/3/10(月) 15:46 -

引用なし
パスワード
   Private Sub CommandButton1_Click()

X = ActiveCell.Row

A = Worksheets("Sheet1").Cells(X, 1).Value
B = Worksheets("Sheet1").Cells(X, 6).Value

End Sub

'**やりたいこと**
'AからF間のセルのどこかを選択(アクティブ状態)しているとき、
'アクティブセルの一番右セル(A1)をAに代入する
'アクティブセルの一番左セル(F6)の範囲をBに代入する

'**困ったこと X = ActiveCell.Rowについて**
'XにアクティブセルのRowが代入されません。
'X = ActiveCell.Rowをストップさせると、値は入っているのに代入がされません。

    
どなたかご教授くださるとうれしいです。

【54360】Re:アクティブセルについて
発言  トオリスガリ  - 08/3/10(月) 16:51 -

引用なし
パスワード
   ▼ゆゆゆ さん:
>Private Sub CommandButton1_Click()
>
>X = ActiveCell.Row
>
> A = Worksheets("Sheet1").Cells(X, 1).Value
> B = Worksheets("Sheet1").Cells(X, 6).Value
>
>End Sub

X,A,Bには値が確認できましたが・・・
debug や msgbox 等でもう一度確認してみては?
それと変数の宣言はしましょう!

【54361】Re:アクティブセルについて
回答  VBWASURETA  - 08/3/10(月) 16:53 -

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

こんにちは。

よくわかりませんが、多分勘違いされているので説明します。

>X = ActiveCell.Row

このRowプロパティですがセルの行数=番号値が入っています。


> A = Worksheets("Sheet1").Cells(X, 1).Value
> B = Worksheets("Sheet1").Cells(X, 6).Value

で、このValueプロパティの変数代入式はそのアクティブ行の
1列=A列、6列=F列のセルに入っている値を取ります。

例えば選択されたセルが6行目だった場合、

セルA6のセルとF6のセルの値をAとBの変数に入れています。
その2つのセルには何も入っていないというだけではないでしょうか?

【54364】Re:アクティブセルについて
発言  ゆゆゆ  - 08/3/10(月) 17:06 -

引用なし
パスワード
   ご回答くださった方へ

ご返答ありがとうございます。

>
>例えば選択されたセルが6行目だった場合、
>
>セルA6のセルとF6のセルの値をAとBの変数に入れています。
>その2つのセルには何も入っていないというだけではないでしょうか?

値は入ってます。A1〜F6まで1,2,3,4,5,6です。
でもストップさせてカーソルをあてると、変数AもBも値は「Empty」と
なってしまいます。
ということは変数に値が入っていないように思うんです。
MsgBoxにすると、なぜかエラーが出ます・・・。

困ってます。

【54366】Re:アクティブセルについて
回答  VBWASURETA  - 08/3/10(月) 17:15 -

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

では指摘があったように変数をちゃんと定義されてみては?

>X = ActiveCell.Row

ではなく

Dim X As Long
X = ActiveCell.Row

では?

【54367】Re:アクティブセルについて
回答  ゆゆゆ  - 08/3/10(月) 17:25 -

引用なし
パスワード
   ▼VBWASURETA さん:
>▼ゆゆゆ さん:
>
>では指摘があったように変数をちゃんと定義されてみては?
>
>>X = ActiveCell.Row
>
>ではなく
>
>Dim X As Long
>X = ActiveCell.Row
>


ご指摘ありがとうございます。


>Dim X As Long

ではエラーが出ます。そもそも、バリアント型かオブジェクト型でないと
だめだというエラーメッセージです。でも、その2つを試してもだめな
理由がまったくわかりません。。。

【54370】Re:アクティブセルについて
発言  VBWASURETA  - 08/3/10(月) 17:30 -

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

> A = Worksheets("Sheet1").Cells(X, 1).Value
> B = Worksheets("Sheet1").Cells(X, 6).Value

ここも定義が必要です。

Dim A As String
Dim B As String

A = Worksheets("Sheet1").Cells(X, 1).Value & ""
B = Worksheets("Sheet1").Cells(X, 6).Value & ""

【54371】Re:アクティブセルについて
発言  neptune  - 08/3/10(月) 17:33 -

引用なし
パスワード
   ▼ゆゆゆ さん:
こんにちは

>>Dim X As Long
>
>ではエラーが出ます。そもそも、バリアント型かオブジェクト型でないと
>だめだというエラーメッセージです。でも、その2つを試してもだめな
>理由がまったくわかりません。。。

これまでに指摘されている事は、本当に
>Dim X As Long
>X = ActiveCell.Row
と書いているならエラーは出るはずがありません。
rowsプロパティは長整数型 (Long) の値を返しますから。

本当はどの様な記述をしているのかを書かれることをお勧めします。

【54373】Re:アクティブセルについて
発言  ハチ  - 08/3/10(月) 17:36 -

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

グラフシートや、グラフオブジェクトを選択して実行しているとか?
外してたら、ゴメンナサイ

【54374】Re:アクティブセルについて
回答  ゆゆゆ  - 08/3/10(月) 17:37 -

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

>本当はどの様な記述をしているのかを書かれることをお勧めします。

Private Sub CommandButton1_Click()

  Dim x As Long
 
  x = ActiveCell.Row
  MsgBox = x


End Sub


上記になります。

【54375】Re:アクティブセルについて
質問  VBWASURETA  - 08/3/10(月) 17:44 -

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

イベントから見てフォーム、コントロールツールボックス、
MS Excelダイアログボックスのいずれか使われてますか?

【54378】Re:アクティブセルについて
回答  neptune  - 08/3/10(月) 17:52 -

引用なし
パスワード
   ▼ゆゆゆ さん:
>▼neptune さん:
>
>>本当はどの様な記述をしているのかを書かれることをお勧めします。
>
>Private Sub CommandButton1_Click()
>
>  Dim x As Long
> 
>  x = ActiveCell.Row
>  MsgBox = x
msgboxは値を返しますが、値を代入する事は出来ません。
xの値をメッセージボックスに表示させたいだけなら
msgbox x
として下さい。
>
>
>End Sub
>
>
>上記になります。

【54380】Re:アクティブセルについて
発言  ゆゆゆ  - 08/3/10(月) 18:06 -

引用なし
パスワード
   ご回答くださる皆さま

あーーーーーーーそうか!!!!

Msgbox のあとは=はいらないんですね。
やっと、「1」「6」が表示されました。
基本的なことご指摘有難うございます。

それで・・・


Private Sub CommandButton1_Click()

  Dim x As Variant
 
  x = ActiveCell.Row
  
A = Worksheets("Sheet1").Cells(x, 1).Value
B = Worksheets("Sheet1").Cells(x, 6).Value


End Sub

上記までは記述しました。そこで、AからBまでの範囲を指定して変数に
代入したく思います。(のち、With・・・を使うため)

Set AAA = Worksheets("Sheet1").Range(A:B)


んー…(A:B)が疑問です。

【54381】Re:アクティブセルについて
発言  ゆゆゆ  - 08/3/10(月) 18:22 -

引用なし
パスワード
   みなさまへ

  A = Worksheets("Sheet1").Cells(x, 1).Select
B = Worksheets("Sheet1").Cells(x, 6).Select

上記のあとに・・・↓


Worksheets("Sheet1").Range("A":"B").Select

または、

Worksheets("Sheet1").Range(A:B).Select

値が入ってるというには関係ないので、あくまでもセルの範囲を
指定したいのです。

【54382】Re:アクティブセルについて
発言  VBWASURETA  - 08/3/10(月) 18:42 -

引用なし
パスワード
   いまいちどいう条件のときに範囲指定したいか理解できません。

>A = Worksheets("Sheet1").Cells(x, 1).Select
>B = Worksheets("Sheet1").Cells(x, 6).Select

因みに↑この使い方もよくわかりません。
ヘルプ見られたのですか?
これエラーになってますよね?


>Worksheets("Sheet1").Range("A":"B").Select

次にA列B列を全て選択したいのですか?
であれば

Worksheets("Sheet1").Range("A:B").Select

の書き方です。

行単位に選択したいのであれば

6行目全選択例:
Range("6:6").Select

です。

【54384】Re:アクティブセルについて
発言  ゆゆゆ  - 08/3/10(月) 18:55 -

引用なし
パスワード
   ▼VBWASURETA さん:
>いまいちどいう条件のときに範囲指定したいか理解できません。
>
>>A = Worksheets("Sheet1").Cells(x, 1).Select
>>B = Worksheets("Sheet1").Cells(x, 6).Select
>
>因みに↑この使い方もよくわかりません。
>ヘルプ見られたのですか?
>これエラーになってますよね?
>
エラーになりませんよ??
>
>>Worksheets("Sheet1").Range("A":"B").Select
>
>次にA列B列を全て選択したいのですか?
うーんと、違います。


Selectがいらないのかもしれません…

例として、
Worksheets("Sheet1").Cells(x, 1)
↑A1が選択される
Worksheets("Sheet1").Cells(x, 6)
↑F6が選択される

その場合、A1からA6のセル範囲の指定方法が知りたいのです。
ご教授何度もありがとうございます。

【54386】Re:アクティブセルについて
回答  neptune  - 08/3/10(月) 22:53 -

引用なし
パスワード
   ▼ゆゆゆ さん:
こんにちは

別のスレッドにも書いてますが、rangeオブジェクト、rangeプロパティ、
cellsプロパティのHelpを先ず読んで下さい。その辺りの知識が欠如してます。

自分の事を書きますと、私は知らないオブジェクトを使う時は先ずHelpを
さらっと見ます。その後不明な点をしげしげと眺めます。
私も、Helpなしではコードは書けません。
回答するにもなるべくHelpは目を通すようにしています。
恐らくどなたもそうだと思いますよ。


それと、VBの文法の基本知識が欠如してます。
厳しいようですが、このような文字だけの掲示板では、技術上の会話は
どうしても専門用語が出てきます。
多少なりとも基礎知識が無ければ会話が成立しません。

>>A = Worksheets("Sheet1").Cells(x, 1).Select
ですが、エラーにはならないかもしれませんが、これもHelpを読んでいれば
Aは成功失敗のboolean型が返ってくるだけで、使い方を知らなければ無意味です。

>その場合、A1からA6のセル範囲の指定方法が知りたいのです。
等のゆゆゆ さんの質問の殆どは、上記の書いているオブジェクト、プロパティ
のHelpにサンプルと共に解説が書かれているので解決するはずです。

一度、Helpに目を通してから、不明な点を質問してはいかがですか?

【54389】Re:アクティブセルについて
回答  ゆゆゆ  - 08/3/11(火) 10:16 -

引用なし
パスワード
   回答くださったみなさま

色々ご指導ありがとうございました。
朝、ひらめいて出来ました。
下記のようなことをしたかったのです。

Private Sub CommandButton1_Click()

  Dim x As Long
 
  x = ActiveCell.Row
  
 Set myRange = Worksheets("Sheet1").Range(Cells(x, 1), Cells(x, 6))

  myRowcnt = myRange.Rows.Count
  myColcnt = myRange.Columns.Count
 With myRange
   .BorderAround LineStyle:=xlDouble

 End With

End Sub

体裁がよくなくてすみません。
ひとまず掲載します。

また相談乗ってください。

【54390】Re:アクティブセルについて
発言  VBWASURETA  - 08/3/11(火) 10:52 -

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

とりあえずサンプルを作って見たので記載します。

選択された範囲取得例:

Sub main()
  Dim frow As Long
  Dim fcol As Long
  
  Dim srow As Long
  Dim scol As Long
    
  With Selection
     If .Count > 1 Then '範囲選択された
    
      srow = UBound(.Value2, 1) '選択行数取得
      scol = UBound(.Value2, 2) '選択列数取得
      
      frow = .row        '範囲開始行取得
      fcol = .Column      '範囲開始列取得
      
      '1列だけの範囲選択
      Worksheets(1).Range(Cells(frow, fcol), Cells(frow + srow, fcol)).Select
     End If
  End With

End Sub

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