
VBA でテーブルの最終行を検出しその下にデーター追加したいのですが
excel テーブル作成で列の最初の、セルに数式をセットしました
その後、その行を削除し、
計算式表示にしても何も表示されない状態
(見た目 数式も、データーもない空のテーブル)の状態から
最初の行にデーターをセットすると、数式が表示され実行されました
オートコンプリートが有効だからでしょうか?
見た目、数式も、データーもない空のテーブルの状態で、VBAでデーター追加時
数式が反映される状態か(数式がセットされているか)判別する方法はあるのでしょうか?
No.4ベストアンサー
- 回答日時:
No.1の回答者です。
質問文(補足を含む)での数式の行の削除の動作が、テーブルの
場合だと通常の行の削除とは違うようです。
見出し行が表示されている場合は、行番号を選択して右クリック
からの削除で見出し行以外の行を削除したとき、行が削除され
値はクリアされますが、数式については見出し行へと何らかの
データとして残るようです。
例えば、テーブルとは関係ない離れた列に、テーブルと同じ行へ
仮の値を入れたとします(複数行あれば同じだけ入れる)。
見出し行が表示された状態で、見出し行以外の指定の行全体を
削除した場合、見出し行の下にある行と同じテーブル範囲外の
値が一番上の行と同じものが残ります。
テーブル内ではすべて消えているように見えますが、実際には
何らかのデータが見出し行があることによって削除されてないと
思われます。(関連する情報を探せなかったので、推測です)
テーブルの見出し行を非表示にした場合、テーブルごと完全に
削除されているので、通常の削除と同じ動作をします。
このことから、見出し行があることによって、行の削除だけでの
データの削除では、数式などはクリアされないということが確認
できると思います。
見出し行を表示した状態で完全に削除したい場合は、右クリック
にある[数式と値のクリア]を選択して、行削除も同時にします。
これで完全に数式がない状態になるはずです。
VBAでの確認も不要になるので、質問に関する問題は解決して
いるかと思います。
ちなみに、DataBodyRangeで指定した範囲でのRows.Countは
見出し行を含まないので、テーブルに数式を入れるのなら+1は
不要だと思います。
オートコレクトが働いている場合なら列内に数式を入れれば、列
全体に設定されるからです。
数式のみの列と別の列に、数式のある行の下に値を入れれば、
テーブルか自動で拡張するので、参照する数式も追加されてる
はずなので、入力するセル指定は問題ないはずです。
数式と同じ行の別列のセルなら、Countで得た値で指定すれば、
同じ行に入るはずです。
具体的な行列番号やテーブルの行数列数、及び数式等を入れたい
列などを補足すれば、他の回答者も回答しやすいかと思います。
質問や補足の内容だけでは、推測での回答になりやすいので。
(たぶん私は、これ以上の追加回答はしないと思います。)
No.3
- 回答日時:
ご質問は、1行目が未入力のレコードかを判定したい、ということでしょうか。
でしたら、テーブルの DataBodyRange が Nothing かどうかで判定できます。
No.2
- 回答日時:
こんにちは
なさりたいことがイマイチよくわからないのですが・・・
◇セルに数式が設定されているかどうかを調べたいのなら
HasFormulaプロパティを調べることで、数式があるかないかを確認できます。
https://learn.microsoft.com/ja-jp/office/vba/api …
◇あるセルを参照している数式があるかを調べたいのなら
参照先のセル範囲は、Dependents プロパティを調べることでわかります。
ただし、参照先のセルが存在しない場合(=どこからも参照されていない場合)はエラーになりますので、エラー処理を行っておく必要があるでしょう。
https://learn.microsoft.com/ja-jp/office/vba/api …
(また、別シートからの参照は上記プロパティには反映されません。)
No.1
- 回答日時:
[オートコレクト](入力オートフォーマット)にある設定ですね。
https://www.crie.co.jp/chokotech/detail/53/
[テーブルに数式をコピーして集計列を作成]にチェックが付いて
いると自動で数式をコピーしてくれるものです。
https://learn.microsoft.com/ja-jp/office/vba/api …
この設定がTRUEなら、コピーしてくれます。
Application.AutoCorrect.AutoFillFormulasInLists = True
こちら↓のように個別指定しなくても設定できるものです。
https://excel-ubara.com/excelvba1/EXCELVBA431.ht …
数式であれば、オートコレクトが有効になっていることでコピー
されますので、反映している状態になるはずです。
以下のサイトの注意点だけ気にして設定すれば、反映されてる
VBAになると思いますよ。
https://neverendworks.com/news/notes-on-setting- …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) エクセル/列追加時、合計行の計算式 7 2023/03/15 11:14
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Excel(エクセル) VLOOKUP 構造化参照について 1 2023/04/24 19:39
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SI Object Browserのテーブルス...
-
クエリのキャンセルがいつにな...
-
accessテーブル作成クエリを実...
-
アクセスVBAでテーブル作成クエ...
-
Accessでバージョン違いのファ...
-
アクセス2007 コンボボックス...
-
ユニオンクエリの結果をテーブ...
-
SQLサーバーのテーブルの値...
-
重複するレコードに対しフラグ...
-
ADOでSeekメッソッドが使えませ...
-
テーブル作成クエリで新テーブ...
-
「マスタ」と「テーブル」の違...
-
ACCESS2007 フォーム 「バリア...
-
ACCESSのSQLで、NULLかNULLでな...
-
accessのエクスポートエラーに...
-
sqlserverで集計結果をUPDATEし...
-
mysql IN句に1データだけ指定...
-
3つ以上のテーブルをUNIONする...
-
SELECT文でのデッドロックに対...
-
PLSQLの識別子エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SI Object Browserのテーブルス...
-
クエリのキャンセルがいつにな...
-
ユニオンクエリの結果をテーブ...
-
accessテーブル作成クエリを実...
-
AccessでOracleのテーブルをリ...
-
コンボボックスで入力したもの...
-
エクセルでテーブルの最終行が...
-
UNIONなどで複数のテーブルから...
-
あるテーブルのデータを追加、...
-
アクセスのテーブル作成クエリ...
-
VIEWしか読み取れないユーザの...
-
PL/SQLでFROM句に変数を使いたい
-
Access のリレーションシップで...
-
ADOでSeekメッソッドが使えませ...
-
ストアドをまたがるローカル一...
-
レプリケーションしているテー...
-
SQLサーバーのテーブルの値...
-
リンクサーバー接続先の参照エ...
-
ACCESS-リンクテーブルの設定で...
-
重複するレコードに対しフラグ...
おすすめ情報
回答ありがとうございます。
オートコンプリートじゃなく オートコレクトですね
すいません間違っていました
テーブル機能を使いたいのでオートコレクトは、有効にしたいです
テーブル設定直後は数式なしですが、各列の一行目に数式を設定し(数式表示にしていると数式が見れますが)設定した行を削除しますと、数式表示にしていても、見た目 数式は消えて空のテーブルに見えます
このテーブルに数式の参照しているセルにデーター入力すると数式が見え、数式どうりの計算結果が反映されます
オートコレクト??
この直前は、数式を設定した行を削除しているので、数式の確認はできないです この状態での数式の確認が可能か知りたいのですが?
回答ありがとうございます。
No1の方への補足のとうりですが
VBAテーブル初心者です。
VBAでテーブルの操作をしようと、思っています
テーブルで、数式をセットし最終行の次の行に入力するとき Range.Rows.Count から+1で入力しようと思ったのですがテーブル作成で、数式のみの行もカウントされるようですので+1でやってしまうと数式のみの行+1に入力されます
数式のみの行から入力する方法が知りたいです
これは最初だけで次からは、Range.Rows.Count+1で、最終行の次に入力できると思いますが
HasFormulaプロパティでは数式行を削除した状態では falseとなるようです
やはりそうですか、試行錯誤を繰り返してそうじゃないかと想像できていたのですが、いくらググってもその辺の情報にであわなったので、ありがとうございました
vba 初心者 なのですが
うまく説明できなくて申し訳ないです
やりたいことは、
作成したフォームの textbox から最終行の次への入力です
テーブルを作った直後は、DataBodyRang は Nothing です
一行目のcolumnに数式を設定します
見た目には、空に見えます(数式非表示に設定している場合)
普通、新しいデーターは、最終行を探して+1行に、入力とすると思うのですが、
これだと、一行目に数式が入っているため2行目から、入ってしまいます
一行目から VBA でデーターを入力する手順を模索している過程で
この質問を出しました
手順(色々あると思いますが)
のいい方法を
教えていただけるとありがたいです。