質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

5032閲覧

エクセル2010のVBA macでは思った通りに動かない

y_repres

総合スコア15

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2016/04/12 18:00

編集2016/04/12 18:52

Windows7 64bit 上にある、MSOffice2010 32bit版で作ったVBAコードのうち、以下の部分が、macにあるoffice2011 for macでは正しく機能しません。windowsでは正しく動きます。何が原因で、どうすればmacでも動くようになるでしょうか?
事情により、コーディング作業はすべてwin上でのみ行い、現場の方に送ってmac上で動かしてもらうという手探り状態です。

'これは、シート「あいうえお」の、o列の日付がmd と sd の間ではない行を削除するもの
dim lastRow as integer, md, sd as Date

md = DateSerial(2016,5,10)
sd = DateAdd("d", 6, md)

lastRow = ThisWorkbook.Worksheets("あいうえお").Cells(30000, 1).End(xlUp).row

cnt = lastRow
For cnt = lastRow To 2 Step -1 '1行目はタイトルなので無視
If IsDate(ThisWorkbook.Worksheets("あいうえお").Range("O" & cnt).Value) = True Then
If CDate(ThisWorkbook.Worksheets("あいうえお").Range("O" & cnt).Value) < md Then
ThisWorkbook.Worksheets("あいうえお").Rows(cnt).Delete
Else
If CDate(ThisWorkbook.Worksheets("あいうえお").Range("O" & cnt).Value) > sd Then
ThisWorkbook.Worksheets("あいうえお").Rows(cnt).Delete
Else
End If
End If
End If
Next cnt


以上です。最初は、大外のIf IsDate(ThisWorkbook.Worksheets("あいうえお").Range("O" & cnt).Value)というのを入れてなかった(O列には日付しか入ってないし、windowsではそれで問題なかった)のですが、macでは、なぜか「型が一致しません」というようなエラーが出たので、このifも挿入しました。
このコードをmacで動かすと、一行も削られることなく出てきてしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Mac版Excel(Office2011)のVBAを使う場合の注意点
http://qiita.com/sjuny/items/d3bf8e4dd9e609374575
などという、記事をグーグル検索して、調査をしてみてください。
EXCELは、元々はfinder時代のmacで成長したのですが、
Microsoftの戦略、戦術のブレによって、
サポートの内容が時代時代で、変化してしまっているのが、mac版EXCELの現状です。
特に注意する部分は、Active-Xコントロール、カレンダーの初日の違いなど、
OSに起因する非互換部分です。

投稿2016/04/13 00:00

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daive

2016/04/13 01:51 編集

追補 Windows 版 EXCEL シート:UTF-8?、MS-UNICODE、ANK、Shift-JIS VBA:原則、1990年代後半のMS-UNICODE:VB6&VBA6が1998年      ANK、Shift-JIS、VBAでは、扱えないUTFの種類がある。 VBE:日本語版は、ANK、Shift-JIS、      各国語版は別、ヨーロッパ諸語族、ハングル、簡体字、繁体字、他      多言語拡張機能とは意味が違うので、注意。 Windows のテキストファイル:タイプライターにならって、C/R、L/Fターミネーション ’ Mac 版 EXCEL シート:文字コードは? VBA:文字コードは? VBE:文字コードは? Unix / Linux系のテキストファイル:貧しかった頃の節約志向?で、                  1byteターミネーション
y_repres

2016/04/20 18:20

なにしろ一筋縄ではいかないということはわかりました。 とても勉強になりました。ありがとうございました。
daive

2016/04/20 23:03 編集

そうそう、 MAC 版では、Excel4Macroや、マクロシートは未だ使用可能でしょうか? Excel4MacroやExecuteExcel4Macro関数 で調べていただくと、 EXCEL4.0 まで標準であった、マクロ機能について、調べられます。 (MAC版EXCELで、成長した機能です。VBAで可能な事の8割位は  可能なはずで、Exel4Macroでしか行えない事も残っています。) Windows 版では、非推奨となっていますが(EXCEL97から非推奨) 未だ使用可能で、EXCEL2007では実装がいいかげんだった為に、 マクロで記録される内容に再登場しています。 (EXCEL2010では再度登場しなくなっている。) ’ 時代的には、Lotus-123と覇権争いをしていた時代の機能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問