Excel VBA質問箱 IV

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

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


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

【48980】複数のセルをひとつのセルに ほうれん草 07/5/19(土) 6:49 質問[未読]
【48982】Re:複数のセルをひとつのセルに ぱっせんじゃー 07/5/19(土) 9:42 発言[未読]
【48984】Re:複数のセルをひとつのセルに ほうれん草 07/5/19(土) 10:53 回答[未読]
【48983】Re:複数のセルをひとつのセルに ichinose 07/5/19(土) 9:59 発言[未読]
【48985】Re:複数のセルをひとつのセルに Kein 07/5/19(土) 13:25 回答[未読]
【48987】Re:複数のセルをひとつのセルに Kein 07/5/19(土) 13:31 発言[未読]

【48980】複数のセルをひとつのセルに
質問  ほうれん草  - 07/5/19(土) 6:49 -

引用なし
パスワード
   3つの各セルの文字を1度にselectして、1つのactivecellにまとめて入れるにはどうしたら用意のでしょう。

【48982】Re:複数のセルをひとつのセルに
発言  ぱっせんじゃー  - 07/5/19(土) 9:42 -

引用なし
パスワード
   つまり、最後に選択したセルに選択セルの文字列を結合して
代入したい、ということかな?

【48983】Re:複数のセルをひとつのセルに
発言  ichinose  - 07/5/19(土) 9:59 -

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

>3つの各セルの文字を1度にselectして、1つのactivecellにまとめて入れるにはどうしたら用意のでしょう。

例えば、

   A

2  aa
3  bb
4  cc

というように文字が入っていた場合、

セルA1からA4を選択した状態(選択セル範囲はA1からA4ですが、
アクティブなセルはA1)で 下記のコード(main)を実行すると、

セルA1には、
 aabbcc というようにA2 A3 A4の文字列が連結された内容が設定されます。


標準モジュールに
'============================================================
Sub main()
  Dim crng As Range
  If TypeName(Selection) = "Range" Then
    ActiveCell.Clear
    For Each crng In Selection
     If ActiveCell.Address <> crng.Address Then
      ActiveCell.Value = ActiveCell.Value & crng.Value
      End If
     Next
    End If
End Sub

【48984】Re:複数のセルをひとつのセルに
回答  ほうれん草  - 07/5/19(土) 10:53 -

引用なし
パスワード
   ▼ぱっせんじゃー さん:
>つまり、最後に選択したセルに選択セルの文字列を結合して
>代入したい、ということかな?

そういうことです。よろしくお願いします。

【48985】Re:複数のセルをひとつのセルに
回答  Kein  - 07/5/19(土) 13:25 -

引用なし
パスワード
   縦でも横でも、すべてに値が入力されている3つのセルを選択し、
右クリックすることによって選択した先頭のセルに文字をまとめる。
というイベントマクロです。シートモジュールに入れて下さい。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
  Dim Tg As Range
  Dim MyV As Variant
  Dim Mst As String
 
  Set Tg = Target
  If Tg.Areas.Count > 1 Or Tg.Count <> 3 Then GoTo ELine
  With WorksheetFunction
   If .CountA(Tg) < 3 Then GoTo ELine
   Cancel = True
   MyV = .Transpose(.Transpose(Tg.Value))
   If Tg.Columns.Count = 1 Then
     MyV = .Transpose(MyV)
   End If
  End With
  Mst = Replace(Join(MyV), Chr(32), "")
  Tg.Cells(1).Value = Mst
ELine:
  Set Tg = Nothing
End Sub

【48987】Re:複数のセルをひとつのセルに
発言  Kein  - 07/5/19(土) 13:31 -

引用なし
パスワード
   >最後に選択したセルに
ということなら
>Tg.Cells(1).Value = Mst


Tg.Cells(Tg.Cells.Count).Value = Mst

に、変更するだけです。
ちなみにアクティブセルは、選択範囲内のどこでも自由に移動できますが、
それを前提にしているなら当然・・

ActiveCell.Value = Mst

と、して下さい。

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