• ベストアンサー

VBでマクロを組んでコマンドボタン操作でセルの中の数字を上下に移動させたい

VB初心者です。どなたか教えてください。やりたいことは以下です。 条件 sheet2がアクティブの状態 sheet2のA1のセルに数字の3が入っている sheet2を表示させたままコマンドボタンを押す sheet1のA10にある数字1を3個上へ表示しA7へ移動し A10はクリアしたい。 もう一度コマンドボタンを押すとA4に移動しA7はクリア することをしたいのです。 このように、コマンドボタンを押すことによってsheet2を 表示させたままsheet1のA列の1と表示している場所を sheet2のA1に表示している数字だけ、上下に自由に動かしたい のですが、すみませんがどなたか教えていただけないでしょうか?

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>sheet2を表示させたままコマンドボタンを押す これからすると、VBではなく、ExcelのVBAのような感じですね。その前提で回答します。 >このように、コマンドボタンを押すことによってsheet2を >表示させたままsheet1のA列の1と表示している場所を 『sheet1のA列の1と表示している場所』の『1』が位置を特定するための要件なのかよく分かりません。 A10とかは例で、A列に沢山数値があって、『1』を探すのか、A列には入力が1つしかないのかもよく分かりません。 今は、Sheet1のA列には入力は1つしかなく、どの行でも、どんな値(文字)でもかまいません。 違っていれば補足して下さい。 下記コードをコピーして、Sheet2のコードウインドウに貼り付けます。 Private Sub CommandButton1_Click()   Dim DataSht1 As Range 'Sheet1のA列のセル   Dim IdoStep As Long '動く幅   '動く幅を取り込む   IdoStep = Range("A1")   '動かすセルを決める   With Worksheets("Sheet1")     Set DataSht1 = .Cells(.Range("A65536").End(xlUp).Row, 1)   End With   'シートの1行目より上に行ったときの対応   On Error GoTo ErrorHandler   'Sheet1のデータを動かす   DataSht1.Offset(-IdoStep, 0) = DataSht1   DataSht1.Clear   Exit Sub ErrorHandler:   'エラーが起きたら何もしない End Sub

pekori
質問者

お礼

ありがとうございます。上記のご指導でうまくいきました。 A列にはひとつの数字『1』しかないように初期化してからの 作業でした。また質問内容もVBAだったのにVBと書いてしま って、ここもお察しのとおりでした。 完璧な回答ありがとうございました。

その他の回答 (1)

  • chas-bon
  • ベストアンサー率0% (0/1)
回答No.1

Dim sell as Integer Dim flag as Integer Dim move as Integer sell = 0 flag = 2 move = 0 Private sub command1_click() if flag = 2 then flag = 1 sell = seet1.A10 sheet1.A7 = sell sheet1.A10 = 0 # 数字の0は入ってしまうのでエンプティにしたいなら""ですが、Integer 型なので、0が入ります。すいません。 else if flag = 1 then flag = 2 move = sheet2.A1   end if # この時点では、moveという変数に、シート2のA1セルの価が入ってるのではないかと思います。 正式なエクセルのVBA記述を知らないのですが、VBで書くならこのやり方ではどうでしょうか? 上下に動かすというところはできませんが、参考にしてみてください。 自信ないのですが参考になると嬉しいです。^^/

参考URL:
http://www.ne.jp/asahi/ja/asd/vb_kouza/
pekori
質問者

お礼

ありがとうございます。すみません、私の質問の仕方が悪いばかりに・・・ VBではなくてVBAだったので、ほんとにすみません。

関連するQ&A