- ベストアンサー
Excel マクロ 任意のセルから実行したい
- Excel2003を使用している場合、K55からE55までのセルの値を削除し、透明のダイアローグボックスをコピーしていくマクロを作成したことがあります。しかし、今度は任意のセルから実行したい場合、どのようにマクロを作成すればよいでしょうか。お知恵をお貸しください。
- Excel2003でK55からE55までのセルの値を削除し、透明のダイアローグボックスをコピーしていくマクロを作成しました。しかし、今度は任意のセルから実行する方法を知りたいです。具体的には、選択したセルの右隣から実行するようにするには、どのようにマクロを書けばよいでしょうか。ご教示ください。
- Excel2003を使用しています。K55からE55までのセルの値を削除し、透明のダイアローグボックスをコピーしていくマクロを作成しました。しかし、今度は任意のセルからマクロを実行したいです。具体的には、選択したセルの右隣から実行する方法を教えていただけないでしょうか。よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 訂正 Range("E55:J55").ClearContents ↓ Selection.Resize(rng.Rows.Count, rng.Columns.Count + 4).ClearContents
その他の回答 (3)
- xls88
- ベストアンサー率56% (669/1189)
とりあえず、提示されたコードを編集してみました。 ダミーシートで試してください。 意図通りになっているでしょうか? Selectしないようにしています。 Range("E55")をActivecellに置き換えれば、選択されてアクティブなセルが操作対象になります。 Dim i As Integer Range("E55").Resize(, 6).ClearContents 'セル基準でテキストボックスを描画 With Range("E55") With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, .left, .Top, .Width, .Height) .Fill.Visible = msoFalse .Line.Visible = msoFalse .Characters.Text = "---" With .Characters(Start:=1, Length:=3).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 End With .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With End With 'Duplicateで先に描画したテキストボックスの複製を作る 'セル基準で配置 For i = 1 To 4 With ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Duplicate .left = Range("E55").Offset(, i).left .Top = Range("E55").Offset(, i).Top End With Next i 'Copyの引数Destinationを使うとクリップボードを経由せずに貼り付け Range("E55").Offset(1).Copy Destination:=Range("E55").Offset(1).Resize(4, 6) '↓でも可 'Range("E55").Offset(1).Copy Range("E55").Offset(1).Resize(4, 6) 基準セルの指定にInputoboxメソッドを使うと良いかも知れません。 セルをクリックで指定することが出来ます。 直接セル番地を入力して指定することも出来ます。 実は奥が深いInputBox http://www.officetanaka.net/excel/vba/tips/tips37.htm
- okormazd
- ベストアンサー率50% (1224/2412)
質問にあいまいなところがあって、コードにも無駄が多いので、何をやりたいか明確ではない。 質問の趣旨の、任意の選択セルから実行(コピー)できるようにはしてあるが、追加の質問には答えません。 Sub test() Dim rng As Range Set rng = ActiveCell Range("E55:J55").ClearContents ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 672#, 729#, _ 81#, 13.5).Select Selection.Characters.Text = "---" With Selection.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 End With With Selection.ShapeRange .Fill.Visible = msoFalse .Line.Visible = msoFalse End With Selection.HorizontalAlignment = xlCenter Selection.Copy For i = 0 To 4 rng.Offset(0, i).Select ActiveSheet.Paste Next Range("E56").Copy Range("E56:J59").Select ActiveSheet.Paste Range("K59").Select End Sub
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 下記サイトをご参照ください。 http://www.happy2-island.com/excelsmile/smile03/capter00701.shtml 選択しているセルの位置を調べてそこから削除するセルを決めたらいいのではないでしょうか。 では。
お礼
ありがとうございます。 上記のマクロでうまく動きました。