プロが教えるわが家の防犯対策術!

エクセルでマクロを書いてみたのですが、思ったように動きません。
お恥ずかしい話ですが、マクロの知識がなく自分ではどこがおかしいのか分かりません。正しい記載を教えて頂けないでしょうか?

sub マクロ ()
dim i as integer
for i =1 to 50
cells(4, i ). select
sendkeys"{F2}", true
sendkeys"{Tab}",true
next
end sub

リスト内の一行を左端のセルからf2キー、tabキーを押していきたいのです。
上記のマクロでは、左端から始まらず途中のセルから始まってしまいます。

要領を得ない質問で恐縮ですがよろしくお願い致します。

質問者からの補足コメント

  • 遅くなり申し訳ありません。
    本日ご助言頂いたように、msgboxを追加してみたところ、左端から動きましたが、F2、TABキーを押す動作をせず、Selectする動作のみしかしませんでした…。
    念のため他の箇所にmsgboxを入れてみましたが同様の結果となりました…。
    yokomaya様のpc上では問題なくマクロが動くようですし、こちらのpcの問題なのかもしれません…。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/03/21 19:36
  • 遅くなり、申し訳ありません。
    また、ご助言頂きありがとうございます。
    VBA上でステップ実行したところ、一列目から始まっていることが確認できました。
    しかし、sendkeysでF2を支持しているため、VBA上ではオブジェクトブラウザを呼び出してしまいその先は確認できませんでした…。
    TH69様のおかげで、恐らくsendkeys以降に問題、または私のPC自体に問題があることが分かりました!ありがとうございました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/03/21 19:41
  • ご助言ありがとうございます。また、要領を得ない質問で申し訳ありません。

    今回のマクロですが、外部データベースよりエクセルダウンロードしたデータを編集可能にするために書きました。

    ダウンロードしたデータは画面上は表示されているのですが、実際に入力された値と認識されないのか数字バーには表示されません。
    それが、f2やダブルクリックをして編集可能にした後、TABやEnterを押すと初めて値として認識されます。
    上記作業をしない限り、表示形式を変更しても何も変化がありません。

    また空白セルに1を入力し、コピー後、値及び乗数貼り付けも試しましたが、そもそもデータが認識されていないためか変化がない状態です。
    特段エラーインジケーターが出ているわけでもありません。

    マクロが小文字であることは、私がiPhoneから打つときに大文字小文字の配慮をしなかったためであり、マクロ上では大文字が混じります。

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/03/21 20:23

A 回答 (4件)

>リスト内の一行を


4行目ですよね
うちではちゃんと左端からいってますが。

途中のセルってどこでしょう?
例えば selectの次に
MsgBox "a"
とか入れたら確認しやすいかと。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。
そうです!4行目です。
それが、50列目から始まるのです…。
msgboxをいれ、再度試してみます。
ありがとうございます!

お礼日時:2017/03/18 13:26

VBEの画面で「F8」キーを押してステップ実行で確認してみてはいかがでしょうか。



多分1列目から始まっていると思います。
この回答への補足あり
    • good
    • 0

>リスト内の一行を左端のセルからf2キー、tabキーを押していきたいのです。


これは一体何をするものなのでしょうか?

「F2 を押して、Tab キーを押す」

数式の中身を見るにしては早すぎるし、何らかの加工をするわけでもないわけですし、このようなマクロは、意味があるとは思えません。

ショートカットキー「F2」
「アクティブ セルを編集し、セルの内容の末尾にカーソルを移動する。または、セルの編集がオフの場合は、数式バーにカーソルを移動する。数式を編集する場合、方向キーで参照を作成できるように、ポイント モードのオン/オフを切り替えます。」

この質問に解答があるのか、私にはよく分からないのです。
もう一つの疑問は、全部が小文字になっているということは、VBEには通していないか、または、何か別なコードがそこに入っているわけですね。いずれにしても、そういうコードはめったに書くようなことはありませんから、詳しい内容を聞かないと、その先は無理かもしれません。
この回答への補足あり
    • good
    • 0

#3の回答者です。



私も、ちゃんとした確証があるわけではありませんが、その状況は知っています。そして、いままで、いろんな方法が試行錯誤されています。
そのデータのことを、「不活性」と言っています。

>外部データベースよりエクセルダウンロードしたデータを編集

ダウンロードデータは、右クリックでプロパテイから、ブロック解除はしていますか?
CSVであっても、データ(タブ)--外部データの取り込み-テキストファイルで、インポートしたほうがよいです。
後は、インポートしたあとで、不活性な状態が続くなら、いくつかの方法があります。

(1)ひとつは、区切り位置ツールを使う方法です。
(2)もうひとつは、もう一度コピーして、値貼り付けにします。
(3) それと同等なのが、以下のマクロのコードです。
(値貼り付けと同じ効果があります)

Sub RecognizeValues()
Dim Rng As Range
Set Rng = ActiveSheet.UsedRange
For Each c In Rng
 c.Value = c.Value  'または、c.Text
Next
End Sub

どれで解決するのか、定かではありませんが、いくつか試してみてください。
    • good
    • 1
この回答へのお礼

ご丁寧にありがとうございます。
こういった事象はよくあることなんですね、不活性という呼び方があることも含め勉強になります。

ブロック解除済み、インポートもご指摘頂いた方法ですがどうしても不活性でした。

しかし、ご教授頂いた区切り位置ツールを使用したところ無事解決しました!
ご丁寧にご教授頂きありがとうございました!

お礼日時:2017/03/22 22:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!