[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別シートへ転記した列の値を削除したい』(VBA勉強中)
以下のような表があるとします。
A行のセルをダブルクリックするとユーザーフォームが開き、 各テキストボックスにダブルクリックした列のB〜Dの値が入るように しています。
2列目のB〜Dまでの値をsheet2に転記した後、sheet1のB〜Dの値を削除したい のですが、うまくいきません。
どのようにしたらよろしいでしょうか。
A B C D
1 1 1/14 \1,000 ○
2 2 2/1 \2,000 ×
3 3
自分で作成してみたコード
Private Sub CommandButton1_Click() Sheet2.Select
Dim lastrow As Long lastrow = Range("B" & Rows.Count).End(xlUp).Offset(1).row
Range("B" & lastrow).Value = TextBox1.Value Range("C" & lastrow).Value = TextBox2.Value Range("D" & lastrow).Value = TextBox3.Value
with sheet1 range("B" & activecellrow).Clear 'Empty値になってしまいます。 range("C" & activecellrow).Clear range("D" & activecellroe).Clear End With
End sub
分かりづらいかと思いますが、よろしくお願いいたします。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
内容を消しているからそうなりますね。
>値を削除したい
値の削除って?
(不負) 2022/01/14(金) 20:59
回答者のγことガンマです。
With Sheet1 .Select .Range("B" & ActiveCell.Row).Clear .Range("C" & ActiveCell.Row).Clear .Range("D" & ActiveCell.Row).Clear End With というようなことではないですか?
老婆心ながら、ご忠告です。 (1)行と列の使い方が普通の使い方と逆です。 皆さんに合わせたほうがハッピイかと思います。 (2)投稿にあたっては、VBEからそのままコピーペイストすることを推奨します。 投稿上のタイプミスと、本来のミスの見分けがつきません。 あ、その件は実はきちんとやっています、 などというやり取りは双方にとって無駄になります。 (3)ClearよりもClearContentsのほうがよいかもしれません。差異を調べてみてください。
(γ) 2022/01/14(金) 21:00
◼️1
VBAの世界では基本的にシートやセルなど(オブジェクトといいます)を明示すれば、いちいちアクティブにしたり選択したりする必要はありません。
また、標準モジュールやユーザーフォームモジュールで、シートの指定を省力するとActivesheetを指定したとみなされるルールです。
従って、意図しないシートの処理とならないように、対象シートはきちんと明示するようにしたほうがよいです。
ついでに言うと、withステートメントを使っても「.」を忘れたら意味がありませんよ。
◼️2
提示のコードについて、「activecellrow」はどこで定義して、どこで取得しているのでしょうか?
いくつか小文字になっている部分があるので手打ちしたのだとおもいますが、つまらないタイプミスで時間をかけてもしょうがないので、極力VBEからそのままコピペされたほうがよいとおもいます。
◼️3
>Empty値になってしまいます
↑の意味がよくわからないです。
本当はどのようになって欲しかったのですか?
(もこな2 ) 2022/01/14(金) 21:05
回答者のγことガンマです。
考えてみたら、SelectしてActiveCellに依存するようなことはせずに、 データを取得して、Textboxに取り込んだ段階で、 なんらかの変数にそのデータのある行番号を保持しておくほうがよいでしょう。
標準モジュールに Public myRow as Long などと宣言しておいて、それに取得したデータのある行番号を保持したらどうですか?
(γ) 2022/01/14(金) 21:18
まだまだ勉強不足で、申し訳ございません。
いただいた内容で試したところ、うまくいきました。
ありがとうございます。
(VBA勉強中) 2022/01/14(金) 22:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.