- ベストアンサー
EXCELのマクロに関する質問です
アクティブなワークブックの名前に応じて処理を変更したいと思い以下のような記述をしたところ「型が一致しません」とエラーが出てしまいました。これは何がいけないのでしょうか。 デバッグモードで4行目のIfからThenまでが黄色く表示されます。 OSはWindows2000を使っています。よろしくお願いします。 Dim FN as String Dim p2 as Single FN = ActiveWorkbook.Name If FN <> "AAA" Or "CCC" Or "EEE" Or "GGG" Then p2 = p2 * 0.001 End If (アクティブなワークブックの名前がAAA、CCC、EEE、GGGのいずれでもないならば、p2に0.001を乗じる処理です。Dim FN as Variantと変更して試してみても同じエラーが出ました)
- みんなの回答 (6)
- 専門家の回答
関連するQ&A
- エクセルのマクロについて教えて下さい。
エクセルのマクロについて教えて下さい。 Sub Ref() Dim ax As String Dim num As Integer, i As Integer Dim arr As Variant Dim tex As String Range("A1").Select ax = ActiveCell.Formula arr = Split(ax, ",") For i = 0 To UBound(arr) num = i + 1 Cells(num, 1).Value = arr(i) Next i For i = 1 To 10 ActiveCell.Offset(, 1).Select tex = ActiveCell.Formula Selection.Resize(num, 1).Select Selection.Formula = tex Selection.Resize(1, 1).Select Next i End Sub このマクロを10行ほどまで対応させたいです。 例として2行の表ですが、 A B C D E F 1 C100,C101,C102,C103 aaa bbb ccc ddd eee 2 C104,C105,C106,C107 とうい表を、 A B C D E F 1 C100 aaa bbb ccc ddd eee 2 C101 aaa bbb ccc ddd eee 3 C102 aaa bbb ccc ddd eee 4 C103 aaa bbb ccc ddd eee 5 C104 aaa bbb ccc ddd eee 6 C105 aaa bbb ccc ddd eee 7 C106 aaa bbb ccc ddd eee 8 C107 aaa bbb ccc ddd eee という表にしたいです。 結合してから展開しようと考えたのですが 1列目の文字列の最後にカンマが無い場合、ある場合がありまして、 対応する事が出来ませんでした。 マクロ初心者なので教えてください。 よろしくお願いします。
- ベストアンサー
- Windows XP
- エクセルのマクロについて質問です。
下の表を展開したいです。 A B C D E F G 1 C102,C103,C104 aaa bbb ccc ddd~ 2 R102,R103,R105 YYY RRR EEE GGG~ 3 R106,R107,R108 空白(上と同じ) 4 空白 5 L102,L103,L105 QQQ MMM NNN BBB~ という表を、 1 C102 aaa bbb ccc ddd 2 C103 aaa bbb ccc ddd 3 C104 aaa bbb ccc ddd 4 R102 YYY RRR EEE GGG というように最後まで展開していきたいです。 下のマクロだとB列以降が全て一番上と同じ文字列がコピーされてしまいます。 よろしくお願いします。 Sub test2() Dim ax As String 'A列のセルに入っているテキストを代入するための変数 Dim ax2 As String 'axを統合したテキストを代入するための変数 Dim num As Integer, i As Integer '回数を代入するための変数 Dim arr As Variant '配列を格納 Dim tex As String 'B列以降の文字列を代入するための変数 'A列にいくつデータが入っているかを確かめ、その数をnumに代入 Range("A1").Select Selection.CurrentRegion.Select num = Selection.Rows.Count Range("A1").Select 'A1のテキストの最後にカンマが入っているかを判定。なければカンマをつける。 'A列のデータが入っている最後のセルまで上記の処理を行う。 '各テキストは変数axに代入、ax2で統合する For i = 1 To num ax = ActiveCell.Text If Right(ax, 1) = "," Then ax = ax Else ax = ax & "," End If If i = 1 Then ax2 = ax Else ax2 = ax2 & ax End If ActiveCell.Offset(1).Select Next i ax2 = Left(ax2, Len(ax2) - 1) arr = Split(ax2, ",") Range("A1").Select For i = 0 To UBound(arr) num = i + 1 Cells(num, 1).Value = arr(i) Next i Range("A1").Select Selection.CurrentRegion.Select num = Selection.Rows.Count 'B~D列を展開 For i = 1 To 3 ActiveCell.Offset(, 1).Select tex = ActiveCell.Formula Selection.Resize(num, 1).Select Selection.Formula = tex Selection.Resize(1, 1).Select Next i End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロについて
エクセル97のマクロについて教えてください。 下のようなエクセルシートがあると仮定します。 このシート全体を選択して用意してあるボタンを押すと、マクロが流れるようにします。 マクロの中身は、項目1~4の値が同じであれば、同じデータを一つにするというものを考えています。 たとえば下の例の場合、追番でいえば2と4のデータは同じなので、マクロ処理にかけると、追番の大きい4のデータは消え、2のデータの"200"項目にフラグ1が追加されるようにしたいのです。 項目の値が同じであれば、いくつでもデータを統一したいと考えています。 ================ エクセル シート例 ================================== 追番_項目1_項目2_項目3_項目4_100_200_300_400 ← 見出し ----------------------------------------------------------------- 1****AAA****BBB****CCC****DDD****1*********1****1**** 2****EEE****FFF****CCC****GGG****1**************1**** 3****HHH****FFF****KKK****JJJ****1****1****1********* 4****EEE****FFF****CCC****GGG****1****1*********1**** ↓ マクロ処理後 追番_項目1_項目2_項目3_項目4_100_200_300_400 ← 見出し ----------------------------------------------------------------- 1****AAA****BBB****CCC****DDD****1*********1****1**** 2****EEE****FFF****CCC****GGG****1****1*********1**** 3****HHH****FFF****KKK****JJJ****1****1****1********* =================================================================== 注:見出しの_とデータの中の*は空白を生めるためのもので、データとはまったく 関係ありません。 なにぶんエクセルVBAは初心者同然なもので... よろしくお願い致します。
- 締切済み
- オフィス系ソフト
- 現在アクティブなワークブック名によって条件分岐させたいのですが
現在アクティブにしているワークブック名によって条件を分岐させたいのですが、下記のように記述すると「型が一致しません」とエラーが出てしまいます。これは何がおかしいのでしょうか。 (デバックモードでIf~Thenまでが黄色でマークされます) Excel2000を使用しています。よろしくお願いします。 Dim t As Single If ActiveWorkbook.Name="AAA.xls" Or "BBB.xls" _ Or "CCC.xls" then t=3.5
- ベストアンサー
- オフィス系ソフト
- SQLについて
aaa bbb ccc ddd eee ggg hhh ---------------------------------------------- 111 111 111 111 111 111 111 112 112 112 112 112 112 111 112 113 113 113 113 113 111 114 114 114 114 114 114 111 114 114 114 114 114 114 112 114 115 115 114 114 115 111 114 115 115 114 114 115 112 116 116 116 116 116 116 111 116 116 116 116 116 116 112 116 116 116 116 116 117 111 116 116 116 116 116 117 112 118 118 118 118 118 118 118 上記のようなデータより、SQLのSELECTを使用して、以下のように抽出したいです。 抽出条件は以下が全て満たしているものとなります。 ・aaa,ccc,ddd,eee,gggが重複、hhhが小さいもの ・bbbが異なるもの aaa bbb ccc ddd eee ggg hhh ---------------------------------------------- 112 112 112 112 112 112 111 ・・・(1) 112 113 113 113 113 113 111 ・・・(1) 114 114 114 114 114 114 111 ・・・(2) 114 115 114 114 114 115 111 ・・・(2) (1)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象 (2)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象 また、hhhが小さいもの 以上、よろしくお願いします。
- ベストアンサー
- PostgreSQL
- VBAでif文にorを使う場合の仕様
http://www.relief.jp/itnote/archives/vba-if-or.php このページにも書かれてあるのですが、 Sub textss() aaa = 2 If aaa = 0 Or 1 Then bbb = 1 ElseIf aaa = 2 Then bbb = 2 End If ccc = bbb End Sub を実行すると cccには2が代入されそうなのですが、実際には1が代入されてしまいます。 If aaa = 0 Or aaa = 1 Then と入力する必要があります。 それでは、 If aaa = 0 Or 1 Then とした時、プログラムではどういう処理がなされているのでしょうか?
- ベストアンサー
- Visual Basic
- 再)excel2000VBAで用紙の上半分部分のみ連続印刷する
ここで教えていただいた、コードを実行したところ見事連続印刷できましたが、シートの上半分が10枚に印刷されます。10枚だと用紙がもったいないので、2シートづつA4で5枚に収めて印刷したいです。それにはどうしたらよろしいか。ご教示お願いします。 Sub TesSample() Dim mySh As Variant '請求書一括印刷 mySh = Array("AAA", "BBB", "CCC", "DDD", "EEE", "FFF", "GGG", "EEE", "FFF", "GGG") Worksheets(mySh).Select Worksheets(mySh).PrintPreview Worksheets("hyousi").Select End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルマクロでファイルを作れません
ワークブックを開く時に自動的にxmlファイルを作るマクロを組みました。 しかし、そのマクロを組んだPCでは正常にxmlファイルが作成されますが、 他のPCで試したらxmlファイルが作成されずにエラーになりました。 その【xmlファイルが作成されなかった】理由がわかりません。 例えば、PCのセキュリティで、マクロによるファイルの読み書きの動作が弾かれていたりするのでしょうか。 以下、そのマクロの本文です。 解決の手がかりだけでも掴めましたら教えていただくと嬉しいです。 Private Sub Workbook_Open() ' ワークブックを開く時のイベント 'Cドライブ直下に「あああ.xml」ファイルが存在すれば削除 If Dir("C:\あああ.xml") <> "" Then Kill "C:\あああ.xml" Else End If 'xmlファイルを作成 ' XMLファイル保存先の指定 Dim iFileNum As Integer iFileNum = FreeFile Dim SaveFileName As String SaveFileName = "C:\あああ.xml" Open SaveFileName For Output As #iFileNum '←ここでエラーになります!! ''xmlファイル本文の作成 Print #iFileNum, "<?xml version=""1.0"" encoding=""UTF-8""?>" Print #iFileNum, "<markers>" Print #iFileNum, "</markers>" '後処理 If iFileNum > 0 Then Close #iFileNum End Sub
- ベストアンサー
- Visual Basic
- Excelマクロのオフセットについて
マクロのセルのオフセットについて質問です。 複数の画像(仮に7枚)を一度に張り付ける際に If ActiveCell.Column = 1 Then ActiveCell.Offset(, 8).Select Else ActiveCell.Offset(4, -8).Select End If このようなマクロ組むと 1 2 3 4 5 6 7 という感じになります。 列は8列空いて、行は4行空くことになると思うのですが これを 1 2 3 4 5 6 7 としたい場合はどのようなマクロの書き方をすればよいのでしょうか? ご指導の程宜しくお願いします。マクロを張り付けておきます。 Declare Function SetCurrentDirectory Lib "kernel32" Alias _ "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long Sub 画像一括貼り付け() Dim Fname As Variant, fe As Variant Dim Fn As Variant, Pic As Shape Dim pno As Long Dim myFileName As String Range("A8").Select SetCurrentDirectory "P:\投レ+相模原\F-POT KBB42365\外観確認" Fname = Application.GetOpenFilename _ ("jpg,*.jpg,jpeg,*.jpeg,bmp,*.bmp,gif,*.gif,png,*.png", MultiSelect:=True) If Not IsArray(Fname) Then MsgBox "取り消されました。", vbInformation Exit Sub End If Application.ScreenUpdating = False pno = 0 For Each Fn In Fname 'この次へ追加すべき行 Selection.Offset(-1, 0) = Mid(Fn, InStrRev(Fn, "\") + 1, Len(Fn) - InStrRev(Fn, "\")) ActiveCell.Select Set Pic = ActiveSheet.Shapes.AddPicture(Filename:=Fn, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=0, Top:=0, Width:=360, Height:=270) With Pic .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue .Top = ActiveCell.Top ' 位置:アクティブセルの上側に重ねる .Left = ActiveCell.Left ' 位置:アクティブセルの左側に重ねる .Placement = xlMove ' 移動するがサイズ変更しない End With If ActiveCell.Column = 1 Then ActiveCell.Offset(, 8).Select Else ActiveCell.Offset(4, -8).Select End If Set Pic = Nothing pno = pno + 1 Next Application.ScreenUpdating = True Range("A1").Select MsgBox pno & "枚の画像を挿入しました", vbInformation End Sub
- ベストアンサー
- Excel(エクセル)
- EB-W05で画面が映らない問題が発生しています。明かりが暗く、スクリーンにほんのりの光しか映らない状態です。
- EB-W05の画面が映らない原因は明かりが暗いことが考えられます。スクリーンにはほんのりの光しか映らない状態で、使用に支障があります。
- EPSONのEB-W05で画面が映らない問題が発生しています。明かりが暗く、スクリーンにはほんのりの光しか映らない状態です。
お礼
お返事遅れてすみません。 無事解決しました。ありがとうございました。