• ベストアンサー

マクロconbi_macroを作りたいのですが。

EXCELVBA 次のようなことをするマクロconbi_macroを作りたいのですが。 ヒントください。 (初期状態) セルa セル1←カーソルがある セル2 セル3 セル4=N ブランクの行 セル5 (結果) セルa 結果のセル1=“セル1”&“セル1”&――“セルN” セル5 (動作) カーソルがあるセル1以下セルからブランクの前までのセルまでを結合して、セル1にいれ、ブランクの行までを消す。 (理想)結合されたデータは自然に元あったデータがつみ上がったようになっていたい。 セル1= Def GHI J セル2= MNO PQR STJ 結果:理想 Def GHI J   ← MNO ← PQR STJ 結果:少し不満 Def GHI JMN ← OPQR STJ

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

なんだかよく分かりませんが、とにかくマクロにしてみました。質問に書かれていない条件は以下のように想定しています。条件が違うなら、ご自身で修正してください  ・処理は1回のみ実行する。(空白行が出現したら終わり)  ・選択されているセルが空白なら処理は実行しない 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 Sub Macro1() Dim ptr As Long Dim str As String If TypeName(Selection) = "Range" And Selection.Value <> "" Then   ptr = 0   With Selection     Do While Len(.Offset(ptr, 0).Value) > 0       str = str & .Offset(ptr, 0).Value & Chr(10)       ptr = ptr + 1     Loop     .Value = Left(str, Len(str) - 1)     .WrapText = True     Range(.Offset(1, 0), .Offset(ptr, 0)).Delete shift:=xlUp   End With End If End Sub ところで「conbi_macro」ってなんでしょう? モジュール名? 新造語? 聞き慣れない名詞は解説を付けていただかないと回答する側は混乱しますよ。(ちなみに「conbi」のスペルは「combi」では?)

taktta
質問者

お礼

目的のものができとても便利です。 WORDからexcelにはりつけたとき、wordの1セルが複数セルに分解されることあり。これで解決。 すばらしいです。今後これを参考に改良したい。 ご回答どうもありがとうございました。

taktta
質問者

補足

結合 n. combination でした。すいません。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

質問の意味が採りにくい。 回答者・読者の負担を少しでも少なくしてください。 セル1とかせず、セルA1とか具体的に書いてください。 >カーソルがあるセル1以下セルからブランクの前までのセルまでを結合して、セル1にいれ、ブランクの行までを消す。 セル1・・は同列か?私の言うとおりに書けば同列のことかは判る。 ●この質問はVBA向きだと思うが、VBAをやった経験はあるのか。 本件でマクロの記録とかやってみたのか。 そしてどこを相対化するのにつまずいたのか。

taktta
質問者

お礼

>質問の意味が採りにくい。 回答者・読者の負担を少しでも少なくしてください。   ;はい、今後改善します。 >セル1とかせず、セルA1とか具体的に書いてください。  :そのとおりですね。今後はA1とか書くようにします。 >カーソルがあるセル1以下セルからブランクの前までのセルまでを結合して、セル1にいれ、ブランクの行までを消す。 セル1・・は同列か? :はい、同列です。 >私の言うとおりに書けば同列のことかは判る。 その通りです。情報を多く伝えなくてはいけないと思いました。 ただカーソル位置が任意だったため、セルnとか書いたが反省してます。そう記述すべきですね。 ●この質問はVBA向きだと思うが、VBAをやった経験はあるのか。 >やった経験ありますが、上の人のような回答がでてくるととても思えません。まずは兼好法師の教えにあるよう、よき先達のよきプログラムを得てそれから学んだほうが高いところへ早く到達できると思っています。 なお質問に先たち、自分なりにやりたいことをマクロ記述しましたが、回答者の回答とは全く類似点なく、このような質問をいたしました。 今後ともimogashi氏のご指導よろしくお願いいたします。 (自分では発想できません) If TypeName(Selection) = "Range" And Selection.Value <> "" Then   ptr = 0

関連するQ&A

専門家に質問してみよう