Excel VBA質問箱 IV

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

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


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

【63194】2つのセルのうち値の入っているほうを取得する まい 09/10/15(木) 9:22 質問[未読]
【63195】Re:2つのセルのうち値の入っているほうを取... もも 09/10/15(木) 10:54 発言[未読]
【63209】Re:2つのセルのうち値の入っているほうを取... まい 09/10/15(木) 14:03 お礼[未読]
【63198】Re:2つのセルのうち値の入っているほうを取... stattis 09/10/15(木) 11:35 発言[未読]
【63199】Re:2つのセルのうち値の入っているほうを取... stattis 09/10/15(木) 11:53 回答[未読]
【63204】Re:2つのセルのうち値の入っているほうを取... まい 09/10/15(木) 13:47 発言[未読]
【63207】Re:2つのセルのうち値の入っているほうを取... まい 09/10/15(木) 13:52 質問[未読]
【63215】Re:2つのセルのうち値の入っているほうを取... stattis 09/10/15(木) 17:45 回答[未読]
【63225】Re:2つのセルのうち値の入っているほうを取... まい 09/10/16(金) 16:48 お礼[未読]
【63206】Re:2つのセルのうち値の入っているほうを取... m2m10 09/10/15(木) 13:51 発言[未読]
【63208】Re:2つのセルのうち値の入っているほうを取... まい 09/10/15(木) 13:54 お礼[未読]

【63194】2つのセルのうち値の入っているほうを取...
質問  まい  - 09/10/15(木) 9:22 -

引用なし
パスワード
   今、セルE3とF3のどちらかに値が入っていたら、値の入っているほうを取得する…といったマクロを作成したいと思っています

今は、

If Range("E3")="" then
  Range("A1")=Range("F3").Value
Else
  Range("A1").range("E3").Value
End if

とコードを記述しましたが、他にも何か良い方法はないかな?と思い、
投稿しました

もしくは、3行目の2列目以降に文字が入っていれば、その文字を取得する方法とかあれば、教えていただきたいです


どうかアドバイスお願いします

【63195】Re:2つのセルのうち値の入っているほうを...
発言  もも  - 09/10/15(木) 10:54 -

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

条件によって、色々な方法があると思いますが
例として2案ほど載せてみます。

 Sub test1()
 Dim r As Range
 With Worksheets("Sheet1").Rows(3)
  Set r = .Find(What:="*", After:=.Cells(1), LookIn:=xlFormulas, LookAt:=xlPart, _
          SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
          MatchByte:=False, SearchFormat:=False)
  If Not r Is Nothing Then MsgBox r.Address(0, 0) & ":" & r.Value
 End With
 End Sub
 
 Sub test2()
 Dim r As Range
 With Worksheets("Sheet1")
  For Each r In .Range(.Range("B3"), .Cells(3, .Columns.Count))
   If r.Value <> "" Then
    MsgBox r.Address(0, 0) & ":" & r.Value
    Exit For
   End If
  Next r
 End With
 End Sub

【63198】Re:2つのセルのうち値の入っているほうを...
発言  stattis  - 09/10/15(木) 11:35 -

引用なし
パスワード
   こんにちは」
▼まい さん:
>今、セルE3とF3のどちらかに値が入っていたら、値の入っているほうを取得する…といったマクロを作成したいと思っています
>
>今は、
>
>If Range("E3")="" then
>  Range("A1")=Range("F3").Value
>Else
>  Range("A1").range("E3").Value
上記おかしくないですか?
>End if
>
>とコードを記述しましたが、他にも何か良い方法はないかな?と思い、
>投稿しました
>
>もしくは、3行目の2列目以降に文字が入っていれば、その文字を取得する方法とかあれば、教えていただきたいです

B3 からIV256のセルの値ですか?

【63199】Re:2つのセルのうち値の入っているほうを...
回答  stattis  - 09/10/15(木) 11:53 -

引用なし
パスワード
   まい さん
こんにちは
訂正です B3からIV3でした と考えてこんな感じです

Sub Test()
Dim R As Range, C As Range, D

On Error GoTo End_Len
Set R = Range("B3:IV3").SpecialCells(xlCellTypeConstants)
On Error GoTo 0
For Each C In R
  D = D & C.Address(0, 0) & ":" & C.Value & Chr(13)
Next C
Set R = Nothing
MsgBox D
Exit Sub

End_Len:
  MsgBox "データがありません", vbInformation
End Sub

【63204】Re:2つのセルのうち値の入っているほうを...
発言  まい  - 09/10/15(木) 13:47 -

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

すみません。
コードの記述が間違ってました…

アドバイスありがとうございます
先ほど、教えてもらったとおりにやってみました。

どうしても下記の部分の意味が理解できません。
[C]変数 のこのような使い方がいまいち分からないのです。

>For Each C In R
>  D = D & C.Address(0, 0) & ":" & C.Value & Chr(13)
>Next C

教えていただけないでしょうか?

【63206】Re:2つのセルのうち値の入っているほうを...
発言  m2m10  - 09/10/15(木) 13:51 -

引用なし
パスワード
    今回の場合は両方をA1に入れれば条件判断は要らないと思います。

Range("A1")=Range("F3").Value & Range("E3").Value

【63207】Re:2つのセルのうち値の入っているほうを...
質問  まい  - 09/10/15(木) 13:52 -

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

もうひとつ不明なのが、
Address(0,0)の(0,0)を記載する意味が…どうしても分かりません

何度もすみませんが、教えていただきたいです
よろしくお願いします

>  D = D & C.Address(0, 0) & ":" & C.Value & Chr(13)

【63208】Re:2つのセルのうち値の入っているほうを...
お礼  まい  - 09/10/15(木) 13:54 -

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

ありがとうございます
なるほど…そういう考えもありました。


> 今回の場合は両方をA1に入れれば条件判断は要らないと思います。
>
> Range("A1")=Range("F3").Value & Range("E3").Value

【63209】Re:2つのセルのうち値の入っているほうを...
お礼  まい  - 09/10/15(木) 14:03 -

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

ありがとうございました。

2案とも試してみました。
いろいろなやり方があるんですね。

もっと勉強します

【63215】Re:2つのセルのうち値の入っているほうを...
回答  stattis  - 09/10/15(木) 17:45 -

引用なし
パスワード
    こんにちは
Address(0, 0)=Address(False, False) です
Addressの場合$A$1と表示されます
私の記載の場合はA1で表示されますのでわかりやすいかなと思って。
詳しくはヘルプで確認してください。

「C」の使い方ですね
これは「SpecialCellsメソッド」でB3;IV3の範囲で値のあるセルを取得しています
それを変数「R」にセットしていますのでその値をループにて1個1個確認しています
そのときに変数「C」を使っています(変数は任意でかまいません)

変数「R」はRangeオブジェクトで宣言していますので「C」も同様に宣言します。



【63225】Re:2つのセルのうち値の入っているほうを...
お礼  まい  - 09/10/16(金) 16:48 -

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

ありがとうございました

助かりました。


いまいち変数の使い方が理解できていない部分もあるので、
勉強します

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