jcctaira の回答履歴

全261件中141~160件表示
  • 複数検索方法

    マクロ(Excel)にて検索できるものを作成しています。 例えばネットワークドライブにて割り当てたH22(Zドライブ)~H1(Gドライブ)というフォルダがあり、UserForm1にてH22~H1のチェックボックスを作成しています。ここでH22とH21のチェックボックスにチェックを入れキーワードを入力し検索すると、H22とH21のフォルダ内になるキーワードと同じファイル名をフォルダ名と同じのシートに検索結果を表示したいです。 しかし、下記のようにすると、1つずつの検索は可能なのですが、複数チェック(H22とH21)入れると H22を検索し終わった後、もう一度キーワードを入力しないとH21を検索してくれません。 複数チェックし1回のキーワード入力で検索するにはどうすれば良いですか? 説明が下手ですが、よろしくお願いします。 Private Sub CommandButton1_Click() If CheckBox1 = True Then Sheets("H22").Visible = True Sheets("H22").Select With Application.FileSearch .NewSearch .LookIn = "Z:\" buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf .SearchSubFolders = True If .Execute() > -5 Then MsgBox .FoundFiles.Count - 5 & " 個のファイルが見つかりました", vbOKOnly, "検索結果" For 検索結果 = 6 To .FoundFiles.Count Cells(検索結果, 3) = .FoundFiles(検索結果) Next 検索結果 Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing For i = 6 To 検索結果 Step 1 Cells(i, 3).Select With ActiveSheet .Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3).Value End With Next i ElseIf CheckBox2 = True Then Sheets("H21").Visible = True Sheets("H21").Select With Application.FileSearch .NewSearch .LookIn = "Y:\" buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf .SearchSubFolders = True If .Execute() > -5 Then MsgBox .FoundFiles.Count - 5 & " 個のファイルが見つかりました", vbOKOnly, "検索結果" For 検索結果 = 6 To .FoundFiles.Count Cells(検索結果, 3) = .FoundFiles(検索結果) Next 検索結果 Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing For i = 6 To 検索結果 Step 1 Cells(i, 3).Select With ActiveSheet .Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3).Value End With Next i  ・  ・  ・ End If End Sub

  • エクセル シート上のTextBox(日付)

    今まではForm上にTextBoxを貼り、スピンボタンにて日付を変化させるのは できるのですが、これをシート上で日付を動かすと どのような記述の変化が必要なのでしょうか? TextBoxはhidukeという名でしています!日付は出るのですが スピンボタンは動きません! すいません教えて下さい! Private Sub SpinButton1_SpinDown() Me.hiduke.Value = DateAdd("d", -1, Me.hiduke.Value) End Sub Private Sub SpinButton1_SpinUp() Me.hiduke.Value = DateAdd("d", 1, Me.hiduke.Value) End Sub Private Sub hiduke_Change() Me.hiduke.Value = Format(Now(), "yyyy/mm/dd") End Sub

  • Excel VBAでのwebクエリ取得データの表示

    Excel VBAを使用してwebクエリでSheet1のB2セル~B3、B4、B5・・・と複数のURLからデータをループで取得し、Sheet2のA1セル~A2、A3、A4にて表示しています。 取得データの内容が3行だと仮定(あくまで仮定です)すると、通常であれば以下※1のように表示されると思います。 ※1 ━━【A】━━━━ 【1】B2セルURLの取得内容 【2】B2セルURLの取得内容 【3】B2セルURLの取得内容 【4】B3セルURLの取得内容 【5】B3セルURLの取得内容 【6】B3セルURLの取得内容 【7】B4セルURLの取得内容 【8】B4セルURLの取得内容 【9】B4セルURLの取得内容 ・      ・ ・      ・ ・      ・ ━━━━━ これを以下※2のように、取得したデータを横に表示することはできないでしょうか? ※2 ━━【A】━━━━━━━━【B】━━━━━━━━【C】━━━━ 【1】B2セルURLの取得内容 B2セルURLの取得内容 B2セルURLの取得内容 【2】B3セルURLの取得内容 B3セルURLの取得内容 B3セルURLの取得内容 【3】B4セルURLの取得内容 B4セルURLの取得内容 B4セルURLの取得内容 【4】B5セルURLの取得内容 B5セルURLの取得内容 B5セルURLの取得内容 【5】B6セルURLの取得内容 B6セルURLの取得内容 B6セルURLの取得内容 ・      ・          ・          ・ ・      ・          ・          ・ ・      ・          ・          ・ ━━━━━ 参考までに以下VBAを使用して、webクエリをループでデータ取得しています。 ━━━━━ Sub webクエリ()   Dim myQT As QueryTable   Dim i As Long   Dim myURL As String   Cells.Delete   For Each myQT In QueryTables: myQT.Delete: Next   Range("A1").Select   For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row     myURL = Sheets("Sheet1").Cells(i, "B").Value     With QueryTables _         .Add(Connection:="URL;" & myURL, Destination:=Selection)       .BackgroundQuery = False       .AdjustColumnWidth = False       .WebSelectionType = xlEntirePage       .WebFormatting = xlWebFormattingNone       .WebTables = "2"       .Refresh BackgroundQuery:=False     End With     Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select   Next End Sub ━━━━━ 当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。 よろしくお願いいたします。

  • Excel VBAでのwebクエリ取得データの表示

    Excel VBAを使用してwebクエリでSheet1のB2セル~B3、B4、B5・・・と複数のURLからデータをループで取得し、Sheet2のA1セル~A2、A3、A4にて表示しています。 取得データの内容が3行だと仮定(あくまで仮定です)すると、通常であれば以下※1のように表示されると思います。 ※1 ━━【A】━━━━ 【1】B2セルURLの取得内容 【2】B2セルURLの取得内容 【3】B2セルURLの取得内容 【4】B3セルURLの取得内容 【5】B3セルURLの取得内容 【6】B3セルURLの取得内容 【7】B4セルURLの取得内容 【8】B4セルURLの取得内容 【9】B4セルURLの取得内容 ・      ・ ・      ・ ・      ・ ━━━━━ これを以下※2のように、取得したデータを横に表示することはできないでしょうか? ※2 ━━【A】━━━━━━━━【B】━━━━━━━━【C】━━━━ 【1】B2セルURLの取得内容 B2セルURLの取得内容 B2セルURLの取得内容 【2】B3セルURLの取得内容 B3セルURLの取得内容 B3セルURLの取得内容 【3】B4セルURLの取得内容 B4セルURLの取得内容 B4セルURLの取得内容 【4】B5セルURLの取得内容 B5セルURLの取得内容 B5セルURLの取得内容 【5】B6セルURLの取得内容 B6セルURLの取得内容 B6セルURLの取得内容 ・      ・          ・          ・ ・      ・          ・          ・ ・      ・          ・          ・ ━━━━━ 参考までに以下VBAを使用して、webクエリをループでデータ取得しています。 ━━━━━ Sub webクエリ()   Dim myQT As QueryTable   Dim i As Long   Dim myURL As String   Cells.Delete   For Each myQT In QueryTables: myQT.Delete: Next   Range("A1").Select   For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row     myURL = Sheets("Sheet1").Cells(i, "B").Value     With QueryTables _         .Add(Connection:="URL;" & myURL, Destination:=Selection)       .BackgroundQuery = False       .AdjustColumnWidth = False       .WebSelectionType = xlEntirePage       .WebFormatting = xlWebFormattingNone       .WebTables = "2"       .Refresh BackgroundQuery:=False     End With     Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select   Next End Sub ━━━━━ 当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。 よろしくお願いいたします。

  • 文字列の数抽出、行挿入マクロ

    急きょ下記処理を実施することになったのですが、本やネットで下記処理ができるような マクロを色々探していもなかなか見つからず…。(T_T) どなたか詳しい方がいらっしゃいましたら教えていただけませんでしょうか? ・A列に特定の文字列(;)があった場合、その列をコピー。 ・その列の下に文字列(;)の数と同数の行を挿入。 ・挿入した行のAセルに、文字列(;)のすぐ後ろの1ケタを貼り付け。 ・(挿入行が2行の場合) さらに下に挿入した行のAセルに、左から2つ目の文字列(;)の  すぐ後ろの1ケタを貼り付け。 なお、A列の行数は、現時点で500行ほどあり、今後増える可能性もあります。 【処理する前】       A列      B列    C列 1行目  1;32     555   AAA 2行目  29;1;4   222   GGG 3行目  600      111   FFF 【マクロ実行後】       A列    B列   C列 1行目  1     555   AAA 2行目  32    555   AAA 3行目  29    222   GGG 4行目  1     222   GGG 5行目  4     222   GGG  6行目  600   111   FFF どうぞよろしくお願いいたします。

  • 相手のメールソフトの種類を確認する方法

    ご存知の方いらっしゃればご教示宜しくお願い致します。m(_ _)m メールを送ってきてくれた方のメールソフトの種類を確認したくて、 Becky2で受信したメールをヘッダー表示にしたところ、 X-Mailer: Microsoft Office Outlook 12.0 と表示されていました。 ただ、これだとOutlook2003なのか、Outlook2007なのか、OutlookExpressなのか 分かりません・・・ X-Mailer: Microsoft Office Outlook 12.0や X-Mailer: Microsoft Office Outlook 11.0などの OutlookやOutlookExpressのバージョンがおわかりになる方は ご教示宜しくお願い致します。

  • Excel VBAでの行の削除について

    Excel VBAを使用して2行ずつ行の削除をし、1行残して(3行目を残す)また2行ずつ行の削除、1行残しす(6行目を残す)をループして行う方法が知りたいです。 イメージとしては以下のような感じです。 ━━【A】━━━━ 【1】あいうえお 【2】かきくけこ 【3】さしすせそ 【4】たちつてと 【5】なにぬねの 【6】はひふへほ 【7】まみむめも 【8】やゆよ 【9】らりるれろ ━━━━━━━━━ ↓マクロ実行後↓ ━━【A】━━━━ 【1】さしすせそ 【2】はひふへほ 【3】らりるれろ ━━━━━━━━━ 当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。 よろしくお願いいたします。

  • セル色を取得するユーザー関数

    セル色を取得するユーザー定義関数として、 Function CellColor(objCell As Range) As Integer  Application.Volatile  CellColor = objCell.Interior.ColorIndex End Function 上記のコードを標準モジュールに貼り付け、例えばB2セルに「=CellColor(A2)」という計算式を入力すると、B2セルにA2セルの塗りつぶし色のColorIndex値が表示されるようになります。 これをB2セルに例えば「=CellColor()」というように入力すれば B2セルにB2セルの塗りつぶし色のColorIndex値が表示されるようにするには、 どのようなユーザー関数を作ればよいでしょうか? よろしくお願いします。

  • Excel:VBA-改行して同じ動作を繰り返すには

    VBAで下記の動作を実現させたいのですが、もう一歩のところで上手くいきません。 アドバイスを宜しくお願いします。 ・C列が空欄になるまで、AD列を改行させて同じ作業を繰り返す。 Do Loopステートメントで下記のように作ってみたのですが、"AD2"から"AD3"に改行させることが 出来ないのです。 ------------------------------------ Sub 棚番2() Range("C2").Activate Do Until ActiveCell.Value = "" Range("AD2").FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-27],棚番!C2:C3,2,0)),"""",VLOOKUP(RC[-27],棚番!   C2:C3,2,0))" Range("AD2").Copy Range("AD2").PasteSpecial Paste:=xlPasteValues ActiveCell.Offset(1).Activate Loop End Sub --------------------------------- 何卒アドバイスを下さいますよう宜しくお願いいたします。

  • 対話型で入力された情報にて処理を行うマクロ(続)

    ここで教えていただいた記述をバージョンアップさせたいです。 仕様と記述 1.インプットBOX-1   「対象値のある列を入力してください」   入力例:G ↓↓ 2.メッセージボックス   「列挿入しそこに転記しますか?」   YES/NO 選択 ↓↓ 3.YESの場合   インプットBOX-2   「挿入したい列を入力してください。例:H列とI列の間→H」   入力例:H   NOの場合   インプットBOX-3   「転記する列を入力してください」   入力例:J インプットBOX-1に入力された値の列を対象列として Select Caseの条件で編集して インプットBOX-2又は3に入力された値の列に転記します。 対象列にデータがあるまで処理を繰り返します。 バージョンアップさせたい内容 (1) インプットBOX-1,2,3はエクセルの列の入力なので A~IV以外の入力はエラーとして 「入力値が違います。A~IV のいずれかを入力してください。再入力しますか?」 でOKをクリックすると再入力可能に (2) インプットBOX-2 インプットBOX-1で入力した値より前の値はエラーとする 「対象列がずれます。●●以外を入力してください。再入力しますか?」 OKをクリックで再入力可能に。 例:インプットBOX-1にCと入力した場合A,B,Cはエラー   となる。●●の所にその値を表示する。 (3) インプットBOX-3 インプットBOX-1で入力した値と同じ値の場合はエラーとする。 「対象列の元の値が削除されたてしまいます。●●以外を入力してください。再入力しますか?」 OKをクリックで再入力可能に。 例:インプットBOX-1にCと入力した場合Cはエラーとなる。   ●●の所にその値を表示する。 (1)(2)(3)の記述を教えてください。お願いします。 以下が現在の記述です。 ↓↓↓ Sub ハイフン挿入02() '2010年11月24日 対象値列 = InputBox("対象値のある列を入力してください") 列挿入 = MsgBox("列挿入しそこに転記しますか?", vbYesNo) If 列挿入 = vbYes Then 転記列 = InputBox("挿入したい列を入力してください。例:H列とI列の間→H") Else 転記列 = InputBox("転記する列を入力してください") End If If 列挿入 = vbYes Then Columns(転記列).Insert Shift:=xlToRight End If 'データは2行目からの事 行 = 2 Do '対象値列にデータがあるまで繰り返す n = Cells(行, 1).Value If n = "" Then Exit Do '対象列は14文字である事 If Len(n) = 14 Then Select Case True '左2字=9X & -が無 Case Left(n, 2) = "9X" And InStr(n, "-") = 0 '3-11で編集 myStr = Left(n, 3) & "-" & Mid(n, 4) '9字目が- Case Mid(n, 9, 1) = "-" '3-5-5で編集 myStr = Left(n, 3) & "-" & Mid(n, 4, 11) '左1字=9 & -が無 Case Left(n, 1) = "9" And InStr(n, "-") = 0 '5-5-2-2で編集 myStr = Left(n, 5) & "-" & Mid(n, 6, 5) & "-" & Mid(n, 11, 2) & "-" & Mid(n, 13, 2) '-が無 Case InStr(n, "-") = 0 '3-5-2-2で編集 myStr = Left(n, 3) & "-" & Mid(n, 4, 5) & "-" & Mid(n, 9, 2) & "-" & Mid(n, 11, 2) & "-" & Mid(n, 13, 2) 'いずれにも属さない14文字 Case Else '編集対象の値を使用する(未編集) myStr = n End Select '編集対象の値が14文字でない Else '編集対象の値を使用する(未編集) myStr = n End If Cells(行, 転記列) = myStr 行 = 行 + 1 Loop End Sub

  • 対話型で入力された情報にて処理を行うマクロ

    以下のプロシージャーを多様しています。 記述を見ていただくと分かりますが A列の値をSelect Caseの条件で編集してB列に転記します。 A列にデータがあるまで処理を繰り返します。 ですが基幹システムの吐き出しがメニューの種類によって 必ずA列に対象値があるとは限らず、 また転記したい場所もB列とは限りません。 例えば、 対象値がC列で、転記したい場所はF列とか 対象値がE列で、転記したい場所はG列とH列の間に 列挿入してそこに転記など。 場面によって記述のコメント部分の●部分を書き換えて使用しています。 もしくは吐き出したデータを列単位で下記記述に合うように列移動し マクロ終了後、元の配列に直しています。 メッセージボックスなどを利用して、対話型にして 入力した情報からマクロの記述を書き換えてそのマクロを起動させる事は可能でしょうか? 例えば 1.メッセージBOX   「対象値のある列を入力してください」   入力例:G 2.メッセージボックス   「列挿入しそこに転記しますか?」   YES/NO 選択 3.YESの場合   メッセージBOX   「挿入したい列を入力してください。例:H列とI列の間→H」   入力例:H   NOの場合   メッセージBOX   「転記する列を入力してください」   入力例:J すると以下の記述のコメント部分の●部分が入力内容にそって書き換わる。 よろしくお願いします。  Sub ハイフン挿入()  '対象列をハイフン挿入し指定列に転記   With ActiveSheet   '●空白列を作成。   '("B:B")が挿入した場所。例:DとEの間→("D:D")   '挿入しない場合は以下2行をコメントアウトする   Columns("B:B").Select   Selection.Insert Shift:=xlToRight 行 = 1 Do 'データが無ければ停止させる。その列を指定。 '●(行,1)の1はA列です。例:C列なら3にする。 If Cells(行, 1).Value = "" Then Exit Do '編集対象の値の列を指定 '●(行,1)の1はA列です。例:C列なら3にする。 n = Cells(行, 1) '値が14文字である事? If Len(n) = 14 Then Select Case True '左2字=9X & -が無 Case Left(n, 2) = "9X" And InStr(1, n, "-", 1) = 0 '3-11で編集 myStr = Left(n, 3) & "-" & Mid(n, 4) '9字目が- Case InStr(1, n, "-", 1) = 9 '3-5-5で編集(3文字目と4文字目に-を入れれば3-5-5になる) myStr = Left(n, 3) & "-" & Mid(n, 4, 11) '左1字=9 & -が無 Case Left(n, 1) = "9" And InStr(1, n, "-", 1) = 0 '5-5-2-2で編集 myStr = Left(n, 5) & "-" & Mid(n, 6, 5) & "-" & Mid(n, 11, 2) & "-" & Mid(n, 13, 2) '-が無 Case InStr(1, n, "-", 1) = 0 '3-5-2-2で編集 myStr = Left(n, 3) & "-" & Mid(n, 4, 5) & "-" & Mid(n, 9, 2) & "-" & Mid(n, 11, 2) & "-" & Mid(n, 13, 2) 'いずれにも属さない14文字 Case Else '編集対象の値を使用する(未編集) myStr = n End Select '編集対象の値が14文字でない Else '編集対象の値を使用する(未編集) myStr = n End If '編集した値を転記する場所を指定 '●(行,2)の2はB列です。例:D列なら4にする。 Cells(行, 2) = myStr '次の行に移動 行 = 行 + 1 Loop End with End Sub

  • VBAの変数は何故「i」から始まることが多い?

    最近、エクセルVBAを始めたものです。 サイトや解説本でいろいろな記述を見たのですが、私が見た限りでは全ての例で、最初に出てくる変数は「i」で表現されていました。 そして次に出てくる変数は「j」。 (例えば、 For i = 1 to 10 ・・・・ Next i とか) 26あるアルファベットからたまたま「i」が選ばれた?にしては、数多くの解説本やサイトで「i」が使用されているので疑問に思いました。 変数を表すのに、例えば「a」「b」「c」……としても何ら問題にならないと思うのですが…… 「i」にしているのには何か理由があるのでしょうか。

  • マクロで半角・全角スペースと改行を削除したい

    マクロ初心者です。 BookA-sheetAの「F1:F40」に入っている文字列左右(前後)の半角・全角スペースと、 改行コードを削除したいのですが、書いてみたマクロはエラーが出てしまいます。 trim関数と、改行コード削除はどう組み合わせればよいのでしょうか? 初心者で申し訳ないのですが、ご教示いただければ幸いです。

  • エクセルTEXT関数で$表示の不思議なこと。

    エクセル2000です。 =TEXT(C3,"$#,##") で、$10,000 と表示されます。 =TEXT(C3,"\#,##") で、\10,000 と表示されます。 ところが、 =TEXT(C3,"US$#,##") では #VALUE! になります。 =TEXT(C3,"JP\#,##") では JP\10,000 と表示されます。 =TEXT(C3,"NT$#,##") では NT$10,000 と表示されます。 なぜ、US$だけはエラーになるのでしょうか?

  • エクセル2003で勤務時間計算をしたいのですが、

    エクセル2003で勤務時間計算をしたいのですが、 現状は下記のように、H列の計算式が30分単位なのですが、 5分単位で給与計算して、小数点以下を切り捨てするには、 H列の計算式のどこを訂正するとよろしいでしょうか? ■現状(時給880円の場合) C列     D列     E列     F列     H列 始業時刻  終業時刻  休憩時間  実働時間  日給 10:00    17:30     0:45    6:45     5720円 H列の計算式 =IF(OR(C9="",D9=""),"",G9*HOUR(F9)+IF(AND(MINUTE(F9)>=0,MINUTE(F9)<=29),0,IF(AND(MINUTE(F9)>29,MINUTE(F9)<=59),G9/2,G9)))

  • EXCEL2007 VBAで選択領域に写真を表示できません。

    EXCEL2007 VBAで選択領域に写真を表示できません。 どなたか教えてください。使用OSはVistaでEXCEL2007を使用しています。 2003では正常に表示されていた、そのままの内容のマクロを使用しているのですが、 なぜか、写真が指定した位置に貼り付きません。 2003と2007では何かが違っていて、別の内容のマクロにしなければならないのでしょうか? 実際のマクロを以下に記します。このマクロの内容は、 マクロの実行中に貼り付ける写真ファイルを指定して、マクロ実行前に選択していた領域の中 に写真を貼付け、縦幅と横幅から計算した縮尺で、サイズを調整して領域の中央にちょうど収 まるようにしています。 2007では、表示される位置は違いますが、サイズ調整だけはうまくいっているようです。 厚かましいお願いで申し訳ありませんが、どうぞよろしくお願いいたします。 Sub TEST() ' Dim SR As Range, PN As String, SN As String Set SR = Selection PN = Application.GetOpenFilename("写真ファイル(*.jpg),*.JPG", 2, _ "写真ファイルの指定", , False) Call PIC(SR, PN, SN) 'Range("SHAPENAME").Cells(1, 1) = SN ' 後で消すためのシェイプ名をシート内に記入 ' End Sub Sub PIC(SR, PN, SN) ' SR.Select ' 写真貼付領域を選択 SH = Selection.Height ' 貼付領域の高さ SW = Selection.Width ' 貼付領域の幅 ActiveSheet.Pictures.Insert(PN).Select ' 写真ファイル貼付 SN = Selection.ShapeRange.Name ' シェイプの名前を記録 RH = Selection.ShapeRange.Height ' 写真情報の高さ RW = Selection.ShapeRange.Width ' 写真情報の幅 S1 = SH / RH ' 高さから決まる縮率 S2 = SW / RW ' 幅から決まる縮率 SC = WorksheetFunction.Min(S1, S2) ' 縮率の最小値 With Selection.ShapeRange ' 写真情報の .Height = RH * SC * 0.995 ' 高さを調整 .Width = RW * SC * 0.995 ' 幅を調整 .IncrementTop (SH - RH * SC) / 2 + RH * SC * 0.005 ' 上端の位置を調整 .IncrementLeft (SW - RW * SC) / 2 + RW * SC * 0.005 ' 左端の位置を調整 End With ' End Sub

  • EXCEL2007 VBAで選択領域に写真を表示できません。

    EXCEL2007 VBAで選択領域に写真を表示できません。 どなたか教えてください。使用OSはVistaでEXCEL2007を使用しています。 2003では正常に表示されていた、そのままの内容のマクロを使用しているのですが、 なぜか、写真が指定した位置に貼り付きません。 2003と2007では何かが違っていて、別の内容のマクロにしなければならないのでしょうか? 実際のマクロを以下に記します。このマクロの内容は、 マクロの実行中に貼り付ける写真ファイルを指定して、マクロ実行前に選択していた領域の中 に写真を貼付け、縦幅と横幅から計算した縮尺で、サイズを調整して領域の中央にちょうど収 まるようにしています。 2007では、表示される位置は違いますが、サイズ調整だけはうまくいっているようです。 厚かましいお願いで申し訳ありませんが、どうぞよろしくお願いいたします。 Sub TEST() ' Dim SR As Range, PN As String, SN As String Set SR = Selection PN = Application.GetOpenFilename("写真ファイル(*.jpg),*.JPG", 2, _ "写真ファイルの指定", , False) Call PIC(SR, PN, SN) 'Range("SHAPENAME").Cells(1, 1) = SN ' 後で消すためのシェイプ名をシート内に記入 ' End Sub Sub PIC(SR, PN, SN) ' SR.Select ' 写真貼付領域を選択 SH = Selection.Height ' 貼付領域の高さ SW = Selection.Width ' 貼付領域の幅 ActiveSheet.Pictures.Insert(PN).Select ' 写真ファイル貼付 SN = Selection.ShapeRange.Name ' シェイプの名前を記録 RH = Selection.ShapeRange.Height ' 写真情報の高さ RW = Selection.ShapeRange.Width ' 写真情報の幅 S1 = SH / RH ' 高さから決まる縮率 S2 = SW / RW ' 幅から決まる縮率 SC = WorksheetFunction.Min(S1, S2) ' 縮率の最小値 With Selection.ShapeRange ' 写真情報の .Height = RH * SC * 0.995 ' 高さを調整 .Width = RW * SC * 0.995 ' 幅を調整 .IncrementTop (SH - RH * SC) / 2 + RH * SC * 0.005 ' 上端の位置を調整 .IncrementLeft (SW - RW * SC) / 2 + RW * SC * 0.005 ' 左端の位置を調整 End With ' End Sub

  • Excel マクロ 特定文字の抽出

    Excel マクロ 特定文字の抽出 10月20日に質問させていただき、jcctaira様にご回答頂きました。 1点うまくいかない点があり、再度質問させていただきます。 お教え頂きましたマクロは下記になります。 For i = 2 To last   strt = Mid(Cells(i, "A"), 6, 3)   Cells(i, "B") = strt  Next i End Sub 3文字が3桁の数字で例えば「001」や「022」の場合に 貼り付けたセルでは「1」や[22」になり0が表示されません。 どのように貼り付けを指定すれば3桁の数字(先頭が0のもの)が 正しく反映されますでしょうか。

  • Excel2003 VBA Functionの定数に関して教えて下さい

    Excel2003 VBA Functionの定数に関して教えて下さい。 例えば、 Function test(x, y) test = A * x + B * y + C End Function という数式を定義し、プログラム中で使用したいとします。 数式を見て分かる通り、xとyは変数でA, B, Cは定数です。 そして、これらA, B, Cの値を A = Cells(3,5) B = Cells(3,6) C = Cells(3,7) のようにシート上の値を使用したいのですが、 上記のようにプログラム中で宣言してもFunctionの中では値が入っていないものとみなされてしまいます。 この問題の回避のため、、 Function test(x, y) A = Cells(3,5) B = Cells(3,6) C = Cells(3,7) test = A * x + B * y + C End Function のようにFunctionの中に、定数を宣言を入れてしまうか、 Function test(x, y, A, B, C) test = A * x + B * y + C End Function のようにA, B, Cも定数ではなく、変数として扱う方法があります。 しかしながら、一つ目の方法では、こういったFunctionの数が増えてくると、 同じ定数を複数の場所で宣言することになり、後からプログラムを書き直そうとしたときに 極めて不便です。 一方で、2つめの方法では、test(x, y, A, B, C)のように、 一つのFunctionを呼び出すためにごちゃごちゃしてスペースをとり、 後から見たときに見にくくなります。 後、Constとして定義する方法もありますが、 A = Cells(3,5) のように、シート上のデータを代入する方法をとりたいと考えています。 上記以外の方法以外でもっとスマートな方法がありましたら 教えて頂けますでしょうか?

  • Excelマクロ オートフィルター条件設定で不等号を使いたい

    Excelマクロ オートフィルター条件設定で不等号を使いたい 請求シートより抽出条件シートに条件を設定し、抽出シートにコピーするマクロ を作成しています。 抽出条件に比較演算子の不等号<>を使った場合、条件が無視されてしまいます。 どのようにしたら良いでしょうか? 請求シートのA列には会社番号が数字4桁で入力されています。 抽出条件シートA5セルに下記の条件を設定した場合、 1と2の場合は上手くフィルターが機能しますが、3の不等号を 使った場合は機能しません。どなたか宜しくお願いします。 1:1000 2:>1000 3:<>1000 Sub テスト() Dim LastRow As Long, LastColumn As Long Dim myData As Range Dim myCriteria As Range With Worksheets("請求") LastColumn = .Cells(5, Application.Columns.Count).End(xlToLeft).Column LastRow = .Cells(Application.Rows.Count, "A").End(xlUp).Row Set myData = .Range("A5", .Cells(LastRow, LastColumn)) End With Set myCriteria = Worksheets("抽出条件").Range("A5").CurrentRegion Worksheets("抽出").Range("A6:R1000").ClearContents myData.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=myCriteria, _ CopyToRange:=Worksheets("抽出").Range("A5:R5"), Unique:=False Set myData = Nothing Set myCriteria = Nothing End Sub