- ベストアンサー
エクセル VBAインプットボックスに入力
こんにちは、教えてください。インプットボックスに入力した数が行(Column)の番号又は、名前がついている行の数値を指定して(例えば、Columnの名前が 80,81など)、その行に入力されているデータなどを次の行にコピーするにはどうすればいいのでしょうか(例えばインプットボックスに入力されている番号が80なら、80の行のデータを81の行にコピーする)?どうしても、次の行にコピーするのがうまくいきません。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2です。 補足のコードを拝見しました。 仮にインプットボックスに「3」という数値を入力すれば D列に1列挿入 → C列すべてを挿入した列にコピー! という操作を行いたい訳ですよね? 2点ほど問題があります。 (1) >With Cells(myColumn, 1) の行の部分で行・列が逆だと思います。 >With Cells(1, myColumn) にしてみてください。 (2) >.EntireColumn.Copy .Offset(1) の行で貼り付け先が1行下となりますので、ここでエラーになると思います。 >.EntireColumn.Copy .Offset(, 1) ※ 手抜きなしに書くと .EntireColumn.Copy .Offset(0, 1) これで補足のコードに関しては動くと思います。m(_ _)m
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >インプットボックスに入力した数が行(Column)・・・ このColumnが紛らわしいのですが、指定した行を下の行へコピーする!というコトですよね? 行番号の場合と「名前」の場合での両方ともご希望なのでしょうか? 「名前」というのがどこを指しているか判らないので A列のデータを検索して、インプットボックスと一致する行をその下へコピー! としています。 尚、単にコピーだけだと下の行にデータがある場合はそれらが消えてしまいますので、 1行挿入してコピーするようにしてみました。 Sub データ名でコピー() Dim myRow As Long, c As Range, sTr As String sTr = InputBox("コピーするA列データを入力") Set c = Range("A:A").Find(what:=sTr, LookIn:=xlValues, lookat:=xlWhole) '←A列データで行を検索 If Not c Is Nothing Then myRow = c.Row Rows(myRow + 1).Insert With Cells(myRow, 1) .EntireRow.Copy .Offset(1) End With Else MsgBox "該当データなし" Exit Sub End If End Sub Sub 行番号でコピー() Dim myRow As Long myRow = InputBox("コピーする行番号を入力") Rows(myRow + 1).Insert With Cells(myRow, 1) .EntireRow.Copy .Offset(1) End With End Sub こんな感じでどうでしょうか?m(_ _)m
補足
こんにちは、返事をありがとうございます!2-3日前に教えていただいたのに、返事があったのかもわからないほど、PC音痴なのに、エクセルとなるともっとわからないです。すみません。。。今日本語の環境ではないので、うまくせつめいできなかったのですが、行ではなくインプットボックスで指定した列のデータすべてを右隣りの列にこぴーするということがしたいでのすが。いただいた返事を参照して、列をコピーするというマクロを組んでみたのですが、どうしても途中で止まってしまいます。何がわるいのでしょうか?教えていただけると助かります。 Sub myColumn_copy() Dim myColumn As Long myColumn = InputBox("データをコピーをする列の番号を選ぶ") Columns(myColumn + 1).Insert With Cells(myColumn, 1) .EntireColumn.Copy .Offset(1) End With End Sub
- mesihuro
- ベストアンサー率34% (23/66)
どこまで出来てるのか分からないけど 作ったソース載せると回答でやすいと思うよ。
お礼
こんにちは、初めてここに質問を載せました。そうですよね、次回からはどこまでできたのか載せるようにします。ご指摘ありがとうございます!
お礼
こんにちは、どうもありがとうございました。列、行の考え方が全然まちがってました。。。助かりました。これから頑張ってみます!