Excel VBA質問箱 IV

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

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


2018 / 13645 ツリー ←次へ | 前へ→

【70475】飛びセル選択とこの飛び飛びセルの名前の名義を・・・ Jto 11/11/19(土) 11:53 質問[未読]
【70477】Re:飛びセル選択とこの飛び飛びセルの名前... UO3 11/11/19(土) 18:18 発言[未読]
【70478】Re:飛びセル選択とこの飛び飛びセルの名前... UO3 11/11/19(土) 18:25 回答[未読]
【70480】Re:飛びセル選択とこの飛び飛びセルの名前... ichinose 11/11/19(土) 18:56 発言[未読]
【70481】Re:飛びセル選択とこの飛び飛びセルの名前... Jto 11/11/19(土) 21:19 質問[未読]
【70482】Re:飛びセル選択とこの飛び飛びセルの名前... Jto 11/11/19(土) 21:31 発言[未読]
【70495】Re:飛びセル選択とこの飛び飛びセルの名前... ichinose 11/11/21(月) 5:56 発言[未読]
【70496】Re:飛びセル選択とこの飛び飛びセルの名前... UO3 11/11/21(月) 9:29 発言[未読]

【70475】飛びセル選択とこの飛び飛びセルの名前の...
質問  Jto  - 11/11/19(土) 11:53 -

引用なし
パスワード
   例えば
A列の2・6・10・・・18のセル
を選択して
名前の定義「AA」とするコードを教えてください

For i = 3 To 14 Step 3
  R = R + Cells(i, 2).Address(0, 0) & ","
Next i
 Range(R).Select
では、最終のセル位置の後ろに「,」が災いします。

良い方法を教えてください。

この後、飛び飛びセルの選択の「名前の定義」をしたいのですが。
よろしくお願いします。

 

【70477】Re:飛びセル選択とこの飛び飛びセルの名...
発言  UO3  - 11/11/19(土) 18:18 -

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

方法はいろいろありますけど、その前に。
提示のコードを実行してできあがる文字列は

B3,B6,B9,B12, ですけど・・・・?

【70478】Re:飛びセル選択とこの飛び飛びセルの名...
回答  UO3  - 11/11/19(土) 18:25 -

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

アップされたコードではなく質問文が正しいとしていくつか。
(名前の定義のコードは割愛しています)

Sub Sample1()
  Dim R As String
  Dim i As Long
  
  R = Range("A2").Address(False, False)
  For i = 6 To 18 Step 4
    R = R & "," & Cells(i, "A").Address(0, 0)
  Next i
 
  MsgBox R

End Sub

Sub Sample2()
  Dim R As String
  Dim i As Long
  Dim sep As String
  
  For i = 2 To 18 Step 4
    R = R & sep & Cells(i, "A").Address(0, 0)
    sep = ","
  Next i
 
  MsgBox R

End Sub

Sub Sample3()
  Dim R As String
  Dim i As Long
  Dim k As Long
  Dim v(1 To 5) As String
  
  For i = 2 To 18 Step 4
    k = k + 1
    v(k) = Cells(i, "A").Address(0, 0)
  Next i
 
  R = Join(v, ",")
  MsgBox R

End Sub

【70480】Re:飛びセル選択とこの飛び飛びセルの名...
発言  ichinose  - 11/11/19(土) 18:56 -

引用なし
パスワード
   こんばんは。

>例えば
>A列の2・6・10・・・18のセル
>を選択して
>名前の定義「AA」とするコードを教えてください
>
>For i = 3 To 14 Step 3
>  R = R + Cells(i, 2).Address(0, 0) & ","
>Next i
> Range(R).Select
最後の カンマについては、UO3さんのコードを見ていただき修正して頂くとして・・、

正しく作成できた 文字列 R でも文字列長が255を超えると
Range(R)では、正しくRangeオブジェクトが取得できずにエラーになります。
セルの個数が255を超えるではなく、あくまでもRの文字列長です。
AA12345,AA12347 なんてセルアドレスだと二つのセルで15文字取られてしまいます。

Unionメソッドを使えばよいですが、これは、セルの数が増えてくると
処理時間がかかりますから、255を超えないアドレス文字列とUnionメソッドを
組み合わせてRangeオブジェクトを取得することも場合によっては
考慮してみてください。


>では、最終のセル位置の後ろに「,」が災いします。
>
>良い方法を教えてください。
>
>この後、飛び飛びセルの選択の「名前の定義」をしたいのですが。
>よろしくお願いします。
>
>

【70481】Re:飛びセル選択とこの飛び飛びセルの名...
質問  Jto  - 11/11/19(土) 21:19 -

引用なし
パスワード
   ▼UO3さん、ichinose さん:
ありがとうございました。色々と検索したのですが、この種の飛び飛びの選択が見いだせず、自分なりにしたのですが、「,」の外し方が分らず困っておりました。
ありがとうございました。

あと一つ名前の定義ですが、マクロの記録でしましたが、あまりにも長いコードになり、もっと短くできないかと思い質問しました。
ActiveWorkbook.Names.Add Name:="ABC", RefersToR1C1:= _
    "=Sheet3!R3C2,Sheet3!R6C2,・・・・・・・・,R92C2

【70482】Re:飛びセル選択とこの飛び飛びセルの名...
発言  Jto  - 11/11/19(土) 21:31 -

引用なし
パスワード
   ▼UO3さん、ichinose さん:
名前の定義に関して検索して出来ました
ありがとうございます。
ActiveWorkbook.Names.Add Name:="ABC", RefersTo:="=Sheet3!" & Range(R).Address, _
      Visible:=True
このような感じで出来ました。

【70495】Re:飛びセル選択とこの飛び飛びセルの名...
発言  ichinose  - 11/11/21(月) 5:56 -

引用なし
パスワード
   おはようございます。

>あと一つ名前の定義ですが、マクロの記録でしましたが、あまりにも長いコードになり、もっと短くできないかと思い質問しました。
>ActiveWorkbook.Names.Add Name:="ABC", RefersToR1C1:= _
>    "=Sheet3!R3C2,Sheet3!R6C2,・・・・・・・・,R92C2
解決したようですが、
  Range(R).Name = "abc"

こんな記述方法もあります。

【70496】Re:飛びセル選択とこの飛び飛びセルの名...
発言  UO3  - 11/11/21(月) 9:29 -

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

ichinoseさん回答のコードがすっきりして好みなんですが、
オリジナルのActiveWorkbook.Names.Add Name:="ABC",・・・・を
お使いになるなら以下のようにしても、少しは短くなりますかね。

Sub Sample4()
  Dim R As String
  Dim i As Long
  Dim sep As String
 
  For i = 2 To 18 Step 4
    R = R & sep & Cells(i, "A").Address(external:=True)
    sep = ","
  Next i

  ActiveWorkbook.Names.Add Name:="ABC", RefersTo:="=" & R
  
End Sub

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