以下のプログラムは、1年間の価格合計を求めるプログラムです。
これを実行するとうまくいくこともありますが、エラーが起きることもあります。
どうやら下記コードが原因のようなのですが、間違いがわかりません。
Target.Offset(0, 1).Value = run * (13 - month)
どこが間違っているのでしょうか。
また最終的に、A行かB行のどちらかが更新されたときにこのプログラムを
実行させたいのですが、方法がわかりません。
無知な質問ではありますが、どなたか教えてください。
---------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim month As Integer
Dim run As Integer
If Intersect(Target, Range("A25:A35")) Is Nothing Then
Exit Sub
Else
If Target.Offset(0, -2).Value <> "" Then
month = Target.Offset(0, -2).Value
month = month - 3
If month = -2 Then
month = 10
ElseIf month = -1 Then
month = 11
ElseIf month = 0 Then
month = 12
End If
run = Target.Offset(0, 0).Value
Target.Offset(0, 1).Value = run * (13 - month)
End If
End If
End Sub
以下のプログラムを書きました。
以下のプログラムではA1~C108を1ページ、A109~C216を2ページ目、A217~C325を3ページ目として印刷するようにページ設定したいのですが、うまく動きません。
どうしてでしょうか?
わかるかたがいたら教えていただけないでしょうか?
よろしくお願いします。
Sub 改ページ設定()
ActiveWindow.View = xlPageBreakPreview '改ページプレビュー
Set ActiveSheet.HPageBreaks(1).Location = Range("C109")
'水平改ページ位置1を変更
Set ActiveSheet.HPageBreaks(2).Location = Range("C217")
'水平改ページ位置2を変更
Set ActiveSheet.HPageBreaks(3).Location = Range("C326")
'水平改ページ位置2を変更
End Sub
以下のプログラムを書きました。
以下のプログラムではA1~C108を1ページ、A109~C216を2ページ目、A217~C325を3ページ目として印刷するようにページ設定したいのですが、うまく動きません。
どうしてでしょうか?
わかるかたがいたら教えていただけないでしょうか?
よろしくお願いします。
Sub 改ページ設定()
ActiveWindow.View = xlPageBreakPreview '改ページプレビュー
Set ActiveSheet.HPageBreaks(1).Location = Range("C109")
'水平改ページ位置1を変更
Set ActiveSheet.HPageBreaks(2).Location = Range("C217")
'水平改ページ位置2を変更
Set ActiveSheet.HPageBreaks(3).Location = Range("C326")
'水平改ページ位置2を変更
End Sub
以下のプログラムを書きました。
以下のプログラムではA1~C108を1ページ、A109~C216を2ページ目、A217~C325を3ページ目として印刷するようにページ設定したいのですが、うまく動きません。
どうしてでしょうか?
わかるかたがいたら教えていただけないでしょうか?
よろしくお願いします。
Sub 改ページ設定()
ActiveWindow.View = xlPageBreakPreview '改ページプレビュー
Set ActiveSheet.HPageBreaks(1).Location = Range("C109")
'水平改ページ位置1を変更
Set ActiveSheet.HPageBreaks(2).Location = Range("C217")
'水平改ページ位置2を変更
Set ActiveSheet.HPageBreaks(3).Location = Range("C326")
'水平改ページ位置2を変更
End Sub
下記のVBAでExcel2003では出来たのですが、Excel2010ではエラーになります。
Excel2003と同じような動作をExcel2010で行いたいのですが、どこをどのように変えたら使用できるようになるでしょうか?
ネットで調べても初心者なもので全くわかりません。
Userform1に作成しているチェックボックスを選択すると、そのチェックボックスに対するドライブからファイルが検索される仕様になってます。
説明が下手で申し訳ありませんが、よろしくお願いします。
Private Sub CommandButton1_Click()
Set FSO = CreateObject("Scripting.FileSystemObject")
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then Exit For 'チェックしてあるかを確認
If x = 18 Then Exit Sub
Next x
buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力")
If buf = "" Or buf = "False" Then Exit Sub
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then
ドライブ = Chr(Asc("J") + x - 1)
Sheets(x + 1).Visible = True
Sheets(x + 1).Select
Cells(1, 1).Select
With Application.FileSearch
.NewSearch
.LookIn = ドライブ & ":\"
.Filename = buf
.SearchSubFolders = True
If .Execute() > 0 Then
MsgBox .FoundFiles.Count & " 個のファイルが見つかりました", vbOKOnly, "検索結果"
b = 1
Application.ScreenUpdating = False
For Each f In .FoundFiles
a = Range("C65536").End(xlUp).Row + 1
Cells(a, 2) = b
Cells(a, 3) = FSO.getfile(f).Name
Cells(a, 4) = FSO.getfile(f).DateLastModified
Cells(a, 5) = FSO.getfile(f).Path
b = b + 1
Next f
Else
MsgBox "見つかりませんでした"
Sheets(x + 1).Visible = False
End If
End With
For i = 5 To a Step 1
Cells(i, 3).Select
With ActiveSheet
.Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 5).Value
End With
Next i
If Range("E5") = "" Then
End
Else
Range(Cells(5, 5), Cells(a, 5)).Clear
End If
End If
Next x
Set FSO = Nothing
Cells(1, 1).Select
Unload UserForm1
End Sub
いつもお世話になります。
エクセル(2003)で指定したデータと同じデータを指定範囲から探し、その行数を返す関数を作りたいのですが、何か良い方法を教えていただけませんでしょうか。
正順で調べて返すことはできるようになったのですが、5000行に貼り付けると実用的な速度が出なくて、、。実際には10000行以上になりそうです。せめて逆順に検索してループを抜けるか、とも思うのですが、それどころではない方法でもあるとうれしいです。
ちなみに、現在書いてあるコードは以下の通りです。
Function LasteData(tg As Object, ar As Range) As Integer ' -------
'
' ar の中にある tgと同じデータの最後の位置を、その行番号で返す。
' 見つからない時は、0 を返す。
'
' ---------------------------------------------------------------
Dim r As Range, p As Integer
p = 0
For Each r In ar
If Not IsEmpty(r.Value) Then
If r.Value = tg.Value Then
p = r.Row
End If
End If
Next r
LastData = p
End Function
いつもお世話になります。
エクセル(2003)で指定したデータと同じデータを指定範囲から探し、その行数を返す関数を作りたいのですが、何か良い方法を教えていただけませんでしょうか。
正順で調べて返すことはできるようになったのですが、5000行に貼り付けると実用的な速度が出なくて、、。実際には10000行以上になりそうです。せめて逆順に検索してループを抜けるか、とも思うのですが、それどころではない方法でもあるとうれしいです。
ちなみに、現在書いてあるコードは以下の通りです。
Function LasteData(tg As Object, ar As Range) As Integer ' -------
'
' ar の中にある tgと同じデータの最後の位置を、その行番号で返す。
' 見つからない時は、0 を返す。
'
' ---------------------------------------------------------------
Dim r As Range, p As Integer
p = 0
For Each r In ar
If Not IsEmpty(r.Value) Then
If r.Value = tg.Value Then
p = r.Row
End If
End If
Next r
LastData = p
End Function
下記のVBAでExcel2003では出来たのですが、Excel2010ではエラーになります。
Excel2003と同じような動作をExcel2010で行いたいのですが、どこをどのように変えたら使用できるようになるでしょうか?
ネットで調べても初心者なもので全くわかりません。
Userform1に作成しているチェックボックスを選択すると、そのチェックボックスに対するドライブからファイルが検索される仕様になってます。
説明が下手で申し訳ありませんが、よろしくお願いします。
Private Sub CommandButton1_Click()
Set FSO = CreateObject("Scripting.FileSystemObject")
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then Exit For 'チェックしてあるかを確認
If x = 18 Then Exit Sub
Next x
buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力")
If buf = "" Or buf = "False" Then Exit Sub
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then
ドライブ = Chr(Asc("J") + x - 1)
Sheets(x + 1).Visible = True
Sheets(x + 1).Select
Cells(1, 1).Select
With Application.FileSearch
.NewSearch
.LookIn = ドライブ & ":\"
.Filename = buf
.SearchSubFolders = True
If .Execute() > 0 Then
MsgBox .FoundFiles.Count & " 個のファイルが見つかりました", vbOKOnly, "検索結果"
b = 1
Application.ScreenUpdating = False
For Each f In .FoundFiles
a = Range("C65536").End(xlUp).Row + 1
Cells(a, 2) = b
Cells(a, 3) = FSO.getfile(f).Name
Cells(a, 4) = FSO.getfile(f).DateLastModified
Cells(a, 5) = FSO.getfile(f).Path
b = b + 1
Next f
Else
MsgBox "見つかりませんでした"
Sheets(x + 1).Visible = False
End If
End With
For i = 5 To a Step 1
Cells(i, 3).Select
With ActiveSheet
.Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 5).Value
End With
Next i
If Range("E5") = "" Then
End
Else
Range(Cells(5, 5), Cells(a, 5)).Clear
End If
End If
Next x
Set FSO = Nothing
Cells(1, 1).Select
Unload UserForm1
End Sub
下記のVBAでExcel2003では出来たのですが、Excel2010ではエラーになります。
Excel2003と同じような動作をExcel2010で行いたいのですが、どこをどのように変えたら使用できるようになるでしょうか?
ネットで調べても初心者なもので全くわかりません。
Userform1に作成しているチェックボックスを選択すると、そのチェックボックスに対するドライブからファイルが検索される仕様になってます。
説明が下手で申し訳ありませんが、よろしくお願いします。
Private Sub CommandButton1_Click()
Set FSO = CreateObject("Scripting.FileSystemObject")
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then Exit For 'チェックしてあるかを確認
If x = 18 Then Exit Sub
Next x
buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力")
If buf = "" Or buf = "False" Then Exit Sub
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then
ドライブ = Chr(Asc("J") + x - 1)
Sheets(x + 1).Visible = True
Sheets(x + 1).Select
Cells(1, 1).Select
With Application.FileSearch
.NewSearch
.LookIn = ドライブ & ":\"
.Filename = buf
.SearchSubFolders = True
If .Execute() > 0 Then
MsgBox .FoundFiles.Count & " 個のファイルが見つかりました", vbOKOnly, "検索結果"
b = 1
Application.ScreenUpdating = False
For Each f In .FoundFiles
a = Range("C65536").End(xlUp).Row + 1
Cells(a, 2) = b
Cells(a, 3) = FSO.getfile(f).Name
Cells(a, 4) = FSO.getfile(f).DateLastModified
Cells(a, 5) = FSO.getfile(f).Path
b = b + 1
Next f
Else
MsgBox "見つかりませんでした"
Sheets(x + 1).Visible = False
End If
End With
For i = 5 To a Step 1
Cells(i, 3).Select
With ActiveSheet
.Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 5).Value
End With
Next i
If Range("E5") = "" Then
End
Else
Range(Cells(5, 5), Cells(a, 5)).Clear
End If
End If
Next x
Set FSO = Nothing
Cells(1, 1).Select
Unload UserForm1
End Sub
下記のVBAでExcel2003では出来たのですが、Excel2010ではエラーになります。
Excel2003と同じような動作をExcel2010で行いたいのですが、どこをどのように変えたら使用できるようになるでしょうか?
ネットで調べても初心者なもので全くわかりません。
Userform1に作成しているチェックボックスを選択すると、そのチェックボックスに対するドライブからファイルが検索される仕様になってます。
説明が下手で申し訳ありませんが、よろしくお願いします。
Private Sub CommandButton1_Click()
Set FSO = CreateObject("Scripting.FileSystemObject")
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then Exit For 'チェックしてあるかを確認
If x = 18 Then Exit Sub
Next x
buf = InputBox("検索したいファイル名を入力してください" & vbCrLf & "ただし、複数キーワード検索はできません" & vbCrLf & "キーワード入力後、「OK」ボタンを選択", "キーワード入力")
If buf = "" Or buf = "False" Then Exit Sub
For x = 1 To 17
If Me.Controls("CheckBox" & x) = True Then
ドライブ = Chr(Asc("J") + x - 1)
Sheets(x + 1).Visible = True
Sheets(x + 1).Select
Cells(1, 1).Select
With Application.FileSearch
.NewSearch
.LookIn = ドライブ & ":\"
.Filename = buf
.SearchSubFolders = True
If .Execute() > 0 Then
MsgBox .FoundFiles.Count & " 個のファイルが見つかりました", vbOKOnly, "検索結果"
b = 1
Application.ScreenUpdating = False
For Each f In .FoundFiles
a = Range("C65536").End(xlUp).Row + 1
Cells(a, 2) = b
Cells(a, 3) = FSO.getfile(f).Name
Cells(a, 4) = FSO.getfile(f).DateLastModified
Cells(a, 5) = FSO.getfile(f).Path
b = b + 1
Next f
Else
MsgBox "見つかりませんでした"
Sheets(x + 1).Visible = False
End If
End With
For i = 5 To a Step 1
Cells(i, 3).Select
With ActiveSheet
.Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 5).Value
End With
Next i
If Range("E5") = "" Then
End
Else
Range(Cells(5, 5), Cells(a, 5)).Clear
End If
End If
Next x
Set FSO = Nothing
Cells(1, 1).Select
Unload UserForm1
End Sub